top-block-game-frontend/src/utils/request.ts

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;