import axios, { AxiosResponse } from 'axios'; import { message } from 'antd'; import config, { getHeaders } from './config'; import LocalStorage from '@/LocalStorage'; import router from '@/router'; // 创建axios实例 const axiosInstance = axios.create({ baseURL: config.baseURL, timeout: 30000,// 请求超时30秒 }); // 请求拦截器 axiosInstance.interceptors.request.use( (config: any) => { config.headers = getHeaders(); if (!navigator.onLine) { message.error('网络故障'); } return config; } ); // 响应拦截器 axiosInstance.interceptors.response.use( (response: AxiosResponse) => {// 成功信息 const { config, data } = response; if (config.responseType === 'blob') { return Promise.resolve(data); } else { if (data.code === 200) {// 成功 return Promise.resolve(data); } else {// 失败 return Promise.reject(data); } } }, (error) => {// 错误信息 // HTTP状态码 const statusCode = error.response.status; if (String(error).includes('timeout')) { message.error('请求超时'); } else { if (statusCode === 401) { LocalStorage.clear(); router.navigate({ pathname: '/login' }, { replace: true }); message.error('登录过期'); } else { message.error('服务异常'); } } return Promise.reject(); } ); export default axiosInstance;