| import axios from 'axios';
|
| import { message } from 'antd';
|
|
|
|
|
| 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:
|
|
|
| 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; |