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