zsqy-naive-ui/src/api/axios.ts

50 lines
1.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import axios, { AxiosResponse, AxiosRequestConfig } from 'axios';
import { ResultEnum } from '@/enums/httpEnum';
// import { ErrorPageNameMap } from "@/enums/pageEnum";
// import { redirectErrorPage } from "@/utils";
import { storage } from '@/utils';
import { StorageEnum } from '@/enums/storageEnum';
const axiosInstance = axios.create({
baseURL: import.meta.env.DEV
? import.meta.env.VITE_APP_API_URL
: `http://${window.location.host}/`,
timeout: ResultEnum.TIMEOUT,
});
// 请求拦截器
axiosInstance.interceptors.request.use(
(config) => {
const TOKEN = storage.get(StorageEnum.ZS_ACCESS_TOKEN);
config.headers.Authorization = TOKEN;
return config;
},
(error: AxiosRequestConfig) => {
return Promise.reject(error);
}
);
// 响应拦截器
axiosInstance.interceptors.response.use(
(res: AxiosResponse) => {
const { message, success } = res.data as IResponse;
// 如果是文件流,直接过
if (res.config.responseType === 'blob') return Promise.resolve(res.data);
if (success) return Promise.resolve(res.data);
// 如果 success 为 false显示服务器返回的错误消息
window['$message'].error(message || '系统错误');
// 重定向
// if (ErrorPageNameMap.get(status)) redirectErrorPage(status);
return Promise.resolve(res.data);
},
(err: AxiosResponse) => {
window['$message'].error('接口异常,请检查');
return Promise.reject(err);
}
);
// 导出 axios 实例
export default axiosInstance;