yak_handcuffs/src/utils/request.ts

54 lines
1.5 KiB
TypeScript

import axios, { AxiosInstance, AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';
import { ElMessage } from "element-plus";
import { useCommonStore } from "@/store/common";
import router from "@/router/index";
import { debounce, throttle } from '.';
const showErrorNotification = throttle((message: string) => {
ElMessage.error(message)
}, 2000); // 设置防抖的等待时间,比如 2000 毫秒
const service: AxiosInstance = axios.create({
baseURL: import.meta.env.VITE_APP_URL,
timeout: 5000
});
service.interceptors.request.use(
(config: InternalAxiosRequestConfig) => {
const comm = useCommonStore();
config.headers['Access-Token'] = comm.user.token;
return config;
},
(error: AxiosError) => {
return Promise.reject();
}
);
service.interceptors.response.use(
(response: AxiosResponse) => {
const { data, headers } = response;
if (headers['content-type'] === "application/vnd.ms-excel;charset=utf-8") return data
if (data.code !== 200) {
if (data.code === 1003) {
const comm = useCommonStore();
comm.clearStore()
router.replace('/login');
}
showErrorNotification(data.msg, 'error');
return Promise.reject(data);
} else {
return data.data
}
},
(error: AxiosError) => {
let { message } = error;
const currentTime = Date.now();
showErrorNotification(message, 'error');
return Promise.reject();
}
);
export default service;