2023-03-15 09:20:03 +08:00

66 lines
1.7 KiB
TypeScript

import Request from 'luch-request';
import { assign } from 'lodash-es';
import { Toast } from '@/utils/uniapi/prompt';
import { getBaseUrl } from '@/utils/env';
import { useAuthStore } from '@/state/modules/auth';
import { ResultEnum } from '@/enums/httpEnum';
const BASE_URL = getBaseUrl();
const HEADER = {
'Content-Type': 'application/json;charset=UTF-8;',
Accept: 'application/json, text/plain, */*',
};
function createRequest() {
return new Request({
baseURL: BASE_URL,
header: HEADER,
custom: {
auth: true,
},
});
}
const request = createRequest();
/**
* 请求拦截器
*/
request.interceptors.request.use(
(options) => {
if (options.custom?.auth) {
const authStore = useAuthStore();
if (!authStore.isLogin) {
Toast('请先登录');
// token不存在跳转到登录页
return Promise.reject(options);
}
options.header = assign(options.header, {
authorization: `Bearer ${authStore.getToken}`,
});
}
return options;
},
(options) => Promise.reject(options)
);
/**
* 响应拦截器
*/
request.interceptors.response.use(
async (response) => {
const { data: resData } = response;
const { code, message } = resData;
if (code === ResultEnum.SUCCESS) {
return resData as any;
}
Toast(message);
return Promise.reject(resData);
},
(response) =>
// 请求错误做点什么。可以使用async await 做异步操作
// error('Request Error!');
Promise.reject(response)
);
export { request };