electricity_bill_calc_userR.../src/queries/axios_instance.ts

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')}`
}