import type { RequestOptions } from '@@/plugin-request/request';
|
import type { RequestConfig } from '@umijs/max';
|
import { history } from '@umijs/max';
|
import { message } from 'antd';
|
|
// 错误处理方案: 错误类型
|
enum ErrorShowType {
|
SILENT = 0,
|
WARN_MESSAGE = 1,
|
ERROR_MESSAGE = 2,
|
NOTIFICATION = 3,
|
REDIRECT = 9,
|
}
|
// 与后端约定的响应数据格式
|
interface ResponseStructure {
|
success: boolean;
|
data: any;
|
errorCode?: number;
|
errorMessage?: string;
|
showType?: ErrorShowType;
|
}
|
|
/**
|
* @name 错误处理
|
* pro 自带的错误处理, 可以在这里做自己的改动
|
* @doc https://umijs.org/docs/max/request#配置
|
*/
|
export const errorConfig: RequestConfig = {
|
// baseURL: 'http://192.168.110.34:9101',
|
baseURL: BASE_URL,
|
|
// 请求拦截器
|
requestInterceptors: [
|
(config: RequestOptions) => {
|
const o = config;
|
const Authorization = localStorage.getItem('token') || '';
|
const isFormData = typeof FormData !== 'undefined' && config.data instanceof FormData;
|
o.headers = {
|
...config.headers,
|
Authorization: Authorization,
|
...(isFormData ? {} : { 'Content-Type': 'application/json' }),
|
};
|
let url = ''
|
// 拦截请求配置,进行个性化处理。
|
if (['/auth/login'].includes(config?.url) ) {
|
url = config?.url;
|
} else {
|
url = '/admin' + config?.url;
|
}
|
// const url = config?.url;
|
|
return { ...config, url };
|
},
|
],
|
|
// 响应拦截器
|
responseInterceptors: [
|
(response: any) => {
|
// 拦截响应数据,进行个性化处理
|
const { data } = response as unknown as ResponseStructure;
|
|
if (data?.code == 103 || data?.code == 401 || data?.code == 510) {
|
history.replace('/login');
|
return response
|
} else if (data?.code == 500) {
|
message.error(data.msg || '服务器错误');
|
return { data: { code: 500, data: null } };
|
} else if (data?.code && data?.code != 200) {
|
message.error(data.msg || '系统错误');
|
} else {
|
return response;
|
}
|
},
|
],
|
};
|