56 lines
1.7 KiB
TypeScript
56 lines
1.7 KiB
TypeScript
import { message } from 'antd';
|
|
import axios, { AxiosInstance } from 'axios';
|
|
import decamelizeKeys from 'decamelize-keys';
|
|
import qs from 'qs';
|
|
import { isNil } from 'ramda';
|
|
|
|
//@ts-nocheck
|
|
import { MaybeMapFactory } from '@/shared/foundation';
|
|
|
|
let engineCache: AxiosInstance | null = null;
|
|
export const baseUrl = '/wxApi'
|
|
/**
|
|
* 应用中所需要使用的AJAX引擎。
|
|
* @param forceUnauthorized 是否强制丢弃用户会话令牌信息。
|
|
* @returns AJAX引擎实例。
|
|
*/
|
|
export const ajaxEngine: MaybeMapFactory<AxiosInstance, boolean> = (forceUnauthorized?: boolean) => {
|
|
const token = localStorage.getItem('token');
|
|
|
|
if (isNil(engineCache)) {
|
|
engineCache = axios.create({
|
|
baseURL: baseUrl,
|
|
paramsSerializer: params =>
|
|
qs.stringify(decamelizeKeys(params), { indices: false, filter: (prefix, value) => value ?? '' })
|
|
});
|
|
engineCache.interceptors.response.use(undefined, error => {
|
|
switch(error?.response?.status) {
|
|
case 403:
|
|
// alertError("登录信息已失效")
|
|
// history.go(-1)
|
|
// window.location.replace("/login")
|
|
return
|
|
default:
|
|
}
|
|
if (error?.response?.data?.message || error?.response?.data) {
|
|
message.error(error?.response?.data?.message || error?.response?.data);
|
|
}
|
|
return Promise.reject(error?.response?.data ?? error)}
|
|
);
|
|
}
|
|
if ((forceUnauthorized ?? false) || isNil(token)) {
|
|
delete engineCache.defaults.headers.common['Authorization'];
|
|
} else {
|
|
engineCache.defaults.headers.common['Authorization'] = `Bearer ${token}`;
|
|
}
|
|
return engineCache;
|
|
};
|
|
|
|
export const OK = 200
|
|
|
|
export function getToken(): string {
|
|
return `Bearer ${localStorage.getItem('token')}`
|
|
}
|
|
|
|
|