import axios, { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios' import { message } from 'antd' // 创建 axios 实例 const request: AxiosInstance = axios.create({ baseURL: '/api', timeout: 10000, headers: { 'Content-Type': 'application/json', }, }) // 请求拦截器 request.interceptors.request.use( (config: AxiosRequestConfig) => { const token = localStorage.getItem('admin_token') if (token && config.headers) { config.headers.Authorization = `Bearer ${token}` } return config }, (error: AxiosError) => { return Promise.reject(error) } ) // 响应拦截器 request.interceptors.response.use( (response: AxiosResponse) => { const { data } = response if (data.code !== 0 && data.code !== 200) { message.error(data.message || '请求失败') return Promise.reject(new Error(data.message)) } return data }, (error: AxiosError) => { const { response } = error if (response) { switch (response.status) { case 401: message.error('登录已过期,请重新登录') localStorage.removeItem('admin_token') window.location.href = '/login' break case 403: message.error('没有权限执行此操作') break case 404: message.error('请求的资源不存在') break case 500: message.error('服务器错误') break default: message.error(response.data?.message || '网络错误') } } else { message.error('网络连接失败') } return Promise.reject(error) } ) export default request