zhengyiming
8 天以前 66d33a33b254d9db7a9dfa7c178d0aeb234f4fb8
src/utils/request/index.ts
@@ -14,7 +14,7 @@
const RefreshTokenUrl = '/GetTokenByRefreshToken';
/** 请求白名单,放置一些不需要token的接口(通过设置请求白名单,防止token过期后再请求造成的死循环问题) */
const whiteList = [RefreshTokenUrl, '/GetToken'];
const whiteList = [RefreshTokenUrl, '/passwordLogin'];
let loadingInstance: ReturnType<typeof Loading.service>;
@@ -55,9 +55,13 @@
  success: boolean;
  data: any;
  /**
   * http状态吗
   */
  code?: number;
  /**
   * 错误码
   */
  error?: number;
  errorCode?: string;
  /**
   * 错误信息
   */
@@ -74,7 +78,7 @@
}
interface ErrorInfo {
  errorCode?: number;
  errorCode?: string;
  errorMessage?: string;
  showType?: ErrorShowType;
  data: any;
@@ -116,6 +120,9 @@
        const errorInfo: ErrorInfo | undefined = (error as any).info;
        if (errorInfo) {
          const { errorMessage, errorCode } = errorInfo;
          if (Number(errorCode) === 401) {
            handleLogout();
          }
          switch (errorInfo.showType) {
            case ErrorShowType.SILENT:
              // do nothing
@@ -141,7 +148,7 @@
      } else if ((error as AxiosError<ResponseStructure, IRequestOptions>).response) {
        // Axios 的错误
        // 请求成功发出且服务器也响应了状态码,但状态代码超出了 2xx 的范围
        handleAxiosResponseError(error as AxiosError<ErrorResponse, IRequestOptions>);
        handleAxiosResponseError(error as AxiosError<ResponseStructure, IRequestOptions>);
        // Message.errorMessage(`Response status:${(error as AxiosError).response.status}`);
      } else if ((error as AxiosError).request) {
        // 请求已经成功发起,但没有收到响应
@@ -156,7 +163,7 @@
    // 错误抛出
    errorThrower: (res) => {
      const { success, data, error: errorCode, msg, showType } = res;
      const { success, data, errorCode, msg, showType } = res;
      if (!success) {
        const error: any = new Error(msg);
        error.name = 'BizError';
@@ -199,7 +206,7 @@
        return new Promise((resolve) => {
          if (userInfo.accessToken && $config.withCredentials) {
            $config.headers['Authorization'] = 'Bearer ' + userInfo.accessToken;
            $config.headers['X-Authorizatio'] = 'Bearer ' + userInfo.refreshToken;
            $config.headers['X-Authorization'] = 'Bearer ' + userInfo.refreshToken;
            resolve($config);
          } else {
            resolve($config);
@@ -236,7 +243,7 @@
        endLoading();
        return getResponse ? response : (response.data as any).result;
        return getResponse ? response : response.data.data;
      },
      (error) => {
        endLoading();
@@ -260,18 +267,18 @@
  [505]: 'HTTP版本不受支持',
};
function handleAxiosResponseError(error: AxiosError<ErrorResponse, IRequestOptions>) {
function handleAxiosResponseError(error: AxiosError<ResponseStructure, IRequestOptions>) {
  if (error.response.config.url.toLowerCase().includes(RefreshTokenUrl.toLowerCase())) {
    handleLogout();
    return;
  }
  if (error && error.response) {
    let message = ErrorMessageMap[error.response?.status] ?? '请求错误';
    if (error.response.data?.error?.message) {
      message = error.response.data?.error?.message;
    if (error.response.data?.msg) {
      message = error.response.data?.msg;
    }
    if (error.response?.status === 401) {
    if (error.response?.status === 401 || error.response.data.code === 401) {
      handleLogout();
    }
    Message.errorMessage(message);