12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /**
- * 该文件可自行根据业务逻辑进行调整
- */
- import type { HttpResponse } from '@vben/request';
- import { preferences } from '@vben/preferences';
- import { RequestClient } from '@vben/request';
- import { message } from 'ant-design-vue';
- import { useAccessStore } from '#/store';
- /**
- * 创建请求实例
- * Create a request instance
- */
- function createRequestClient() {
- const client = new RequestClient({
- baseURL: import.meta.env.VITE_GLOB_API_URL,
- // 为每个请求携带 Authorization
- makeAuthorization: () => {
- return {
- // 默认
- key: 'Authorization',
- tokenHandler: () => {
- const accessStore = useAccessStore();
- return {
- refreshToken: `${accessStore.refreshToken}`,
- token: `${accessStore.accessToken}`,
- };
- },
- unAuthorizedHandler: async () => {
- const accessStore = useAccessStore();
- accessStore.setAccessToken(null);
- if (preferences.app.loginExpiredMode === 'modal') {
- accessStore.openLoginExpiredModal = true;
- } else {
- // 退出登录
- await accessStore.logout();
- }
- },
- };
- },
- makeErrorMessage: (msg) => message.error(msg),
- });
- 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;
- }
- const requestClient = createRequestClient();
- // 其他配置的请求方法
- // const { request: xxxRequest } = createRequest();
- export { requestClient };
|