68 lines
1.6 KiB
TypeScript
68 lines
1.6 KiB
TypeScript
import axios from 'axios';
|
|
import { notification } from 'antd';
|
|
import RoutePath from '@/routes/routePath';
|
|
import { history } from 'umi';
|
|
import { CACHE_TOKEN } from '@/constants/cacheKey';
|
|
|
|
// create an axios instance
|
|
const request = axios.create({
|
|
baseURL: '', //
|
|
timeout: 10000, // request timeout
|
|
});
|
|
// request interceptor
|
|
request.interceptors.request.use(
|
|
(memo: any) => {
|
|
memo.headers.token = localStorage.getItem(CACHE_TOKEN);
|
|
return memo;
|
|
},
|
|
(error) => {
|
|
return Promise.reject(error);
|
|
},
|
|
);
|
|
|
|
request.interceptors.response.use(
|
|
(response) => {
|
|
const res: any = response.data;
|
|
if (res.code !== 200) {
|
|
if (res.code === 401) {
|
|
notification.error({
|
|
message: '错误信息',
|
|
description: '登录失效',
|
|
});
|
|
history.replace(RoutePath.LOGIN);
|
|
localStorage.removeItem(CACHE_TOKEN);
|
|
return Promise.reject(new Error('Login expiration'));
|
|
}
|
|
notification.error({
|
|
message: '错误信息',
|
|
description: res.msg,
|
|
});
|
|
return Promise.reject(res.msg || 'Error');
|
|
}
|
|
return res.data;
|
|
},
|
|
(error) => {
|
|
return Promise.reject(error);
|
|
},
|
|
);
|
|
|
|
export const baseRequestForm = (url: string, data: object, ...rest: any) => {
|
|
const form = new FormData();
|
|
Object.keys(data).map((key) => {
|
|
form.append(key, data[key]);
|
|
return key;
|
|
});
|
|
return request({
|
|
url,
|
|
method: 'post',
|
|
body: form,
|
|
...rest,
|
|
});
|
|
};
|
|
|
|
export const baseRequestGet = (url: string, params) => request({ url, method: 'get', params });
|
|
|
|
export const baseRequestPost = (url: string, data) => request({ url, method: 'post', data });
|
|
|
|
export default request;
|