12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import type { HttpResponse } from '@vben/request';
- import { useAppConfig } from '@vben/hooks';
- import { preferences } from '@vben/preferences';
- import { RequestClient } from '@vben/request';
- import { useAccessStore } from '@vben/stores';
- import { message } from 'ant-design-vue';
- import { useAuthStore } from '#/store';
- const { apiURL } = useAppConfig(import.meta.env, import.meta.env.PROD);
- function createRequestClient(baseURL: string) {
- const client = new RequestClient({
- baseURL,
-
- makeAuthorization: () => {
- return {
-
- key: 'Authorization',
- tokenHandler: () => {
- const accessStore = useAccessStore();
- return {
- refreshToken: `${accessStore.refreshToken}`,
- token: `${accessStore.accessToken}`,
- };
- },
- unAuthorizedHandler: async () => {
- const accessStore = useAccessStore();
- const authStore = useAuthStore();
- accessStore.setAccessToken(null);
- if (preferences.app.loginExpiredMode === 'modal') {
- accessStore.setLoginExpired(true);
- } else {
-
- await authStore.logout();
- }
- },
- };
- },
- makeErrorMessage: (msg) => message.error(msg),
- makeRequestHeaders: () => {
- return {
-
- 'Accept-Language': preferences.app.locale,
- };
- },
- });
- client.addResponseInterceptor<HttpResponse>((response) => {
- const { data: responseData, status } = response;
- const { code, data, message: msg } = responseData;
- if (status >= 200 && status < 400 && code === 0) {
- return data;
- }
- throw new Error(msg);
- });
- return client;
- }
- export const requestClient = createRequestClient(apiURL);
|