import axios from 'axios'; import { message } from 'antd'; // 创建axios实例 const api = axios.create({ baseURL: '/api', timeout: 30000, headers: { 'Content-Type': 'application/json', }, }); // 请求拦截器 api.interceptors.request.use( (config) => { const token = localStorage.getItem('token'); if (token) { config.headers.Authorization = `Bearer ${token}`; } return config; }, (error) => { return Promise.reject(error); } ); // 响应拦截器 api.interceptors.response.use( (response) => { return response.data; }, (error) => { if (error.response) { const { status, data } = error.response; switch (status) { case 401: // Token过期或无效 localStorage.removeItem('token'); localStorage.removeItem('user'); window.location.href = '/login'; message.error('登录已过期,请重新登录'); break; case 403: message.error('没有权限访问该资源'); break; case 404: message.error('请求的资源不存在'); break; case 422: message.error(data.message || '数据验证失败'); break; case 500: message.error('服务器错误,请稍后重试'); break; default: message.error(data.message || '请求失败'); } } else if (error.request) { message.error('网络错误,请检查网络连接'); } else { message.error('请求配置错误'); } return Promise.reject(error); } ); export default api;