import axios, {AxiosInstance,AxiosRequestConfig,AxiosResponse} from "axios"; import { message } from "antd"; import Cookie from 'js-cookie' import { IResponse } from "../type"; import confirm from "antd/lib/modal/confirm"; import { AlertTwoTone } from '@ant-design/icons'; const service: AxiosInstance = axios.create({ baseURL: process.env.REACT_APP_APIPATH, headers: { 'Content-Type': 'application/json', }, timeout: 10000 }) // 添加请求拦截 service.interceptors.request.use((config:AxiosRequestConfig)=>{ const token: string | null = Cookie.get('authorization') || ''; if(config && config.headers && token) { config.headers.authorization = token } return config },(error:any)=>{ return Promise.reject(error) }) const request = async (config:AxiosRequestConfig): Promise> => { try { const response = await service.request>(config) return response.data } catch(err: any) { switch(err.response.status) { case 401 : confirm({ title:'提示', content: '登录过期,请重新登录', onOk() { Cookie.remove('authorization'); window.location.href = 'wenhua.com/'; }, onCancel() { }, }); break; case 403 : message.error('禁止访问'); break; case 404 : message.error('页面或接口地址不存在'); break; case 405 : message.error('数据传输格式错误'); break; default : message.error('系统未知错误!'); break; } message.error(err.message) return { code: -1, msg: 'error', data: null as any } } } export default request;