| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- 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;
|