59 lines
1.7 KiB
TypeScript
59 lines
1.7 KiB
TypeScript
import axios, {AxiosInstance,AxiosRequestConfig,AxiosResponse} from "axios";
|
|
import { message } from "antd";
|
|
import Cookie from 'js-cookie'
|
|
import { IResponse } from "../type";
|
|
import confirm from "antd/lib/modal/confirm";
|
|
import { AlertTwoTone } from '@ant-design/icons';
|
|
const service: AxiosInstance = axios.create({
|
|
baseURL: process.env.REACT_APP_APIPATH,
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
timeout: 10000
|
|
})
|
|
// 添加请求拦截
|
|
service.interceptors.request.use((config:AxiosRequestConfig)=>{
|
|
const token: string | null = Cookie.get('authorization') || '';
|
|
if(config && config.headers && token) {
|
|
config.headers.authorization = token
|
|
}
|
|
return config
|
|
},(error:any)=>{
|
|
return Promise.reject(error)
|
|
})
|
|
const request = async <T=any>(config:AxiosRequestConfig): Promise<IResponse<T>> => {
|
|
try {
|
|
const response = await service.request<IResponse<T>>(config)
|
|
return response.data
|
|
} catch(err: any) {
|
|
switch(err.response.status) {
|
|
case 401 : confirm({
|
|
title:'提示',
|
|
content: '登录过期,请重新登录',
|
|
onOk() {
|
|
Cookie.remove('authorization');
|
|
window.location.href = 'wenhua.com/';
|
|
},
|
|
onCancel() {
|
|
|
|
},
|
|
});
|
|
break;
|
|
case 403 : message.error('禁止访问');
|
|
break;
|
|
case 404 : message.error('页面或接口地址不存在');
|
|
break;
|
|
case 405 : message.error('数据传输格式错误');
|
|
break;
|
|
default : message.error('系统未知错误!');
|
|
break;
|
|
}
|
|
message.error(err.message)
|
|
return {
|
|
code: -1,
|
|
msg: 'error',
|
|
data: null as any
|
|
}
|
|
}
|
|
}
|
|
export default request; |