Browse Source

fix: 修复网络请求没有捕获非200的错误

pull/74/head
cp3hnu 1 year ago
parent
commit
e7e381c17c
1 changed files with 29 additions and 19 deletions
  1. +29
    -19
      react-ui/src/requestConfig.ts

+ 29
- 19
react-ui/src/requestConfig.ts View File

@@ -9,12 +9,16 @@ import { clearSessionToken, getAccessToken } from './access';
import { setRemoteMenu } from './services/session'; import { setRemoteMenu } from './services/session';
import { gotoLoginPage } from './utils/ui'; import { gotoLoginPage } from './utils/ui';


// [antd: Notification] You are calling notice in render which will break in React 18 concurrent mode. Please trigger in effect instead.
const popupError = (error: string) => {
message.error(error);
};

/** /**
* Umi Max 网络请求配置 * Umi Max 网络请求配置
* @doc https://umijs.org/docs/max/request#配置 * @doc https://umijs.org/docs/max/request#配置
*/ */
export const requestConfig: RequestConfig = { export const requestConfig: RequestConfig = {
errorConfig: {},
requestInterceptors: [ requestInterceptors: [
(url: string, options: AxiosRequestConfig) => { (url: string, options: AxiosRequestConfig) => {
const headers = options.headers ?? {}; const headers = options.headers ?? {};
@@ -30,26 +34,32 @@ export const requestConfig: RequestConfig = {
}, },
], ],
responseInterceptors: [ responseInterceptors: [
(response: AxiosResponse) => {
const { status, data } = response || {};
if (status >= 200 && status < 300) {
if (data && (data instanceof Blob || data.code === 200)) {
return response;
} else if (data && data.code === 401) {
clearSessionToken();
setRemoteMenu(null);
gotoLoginPage(false);
message.error('请重新登录');
return Promise.reject(response);
[
(response: AxiosResponse) => {
const { status, data } = response || {};
console.log(message, data);
if (status >= 200 && status < 300) {
if (data && (data instanceof Blob || data.code === 200)) {
return response;
} else if (data && data.code === 401) {
clearSessionToken();
setRemoteMenu(null);
gotoLoginPage(false);
popupError('请重新登录');
return Promise.reject(response);
} else {
popupError(data?.msg ?? '请求失败');
return Promise.reject(response);
}
} else { } else {
console.log(message, data);
message.error(data?.msg ?? '请求失败');
popupError('请求失败');
return Promise.reject(response); return Promise.reject(response);
} }
} else {
message.error('请求失败');
return Promise.reject(response);
}
},
},
(error: Error) => {
popupError(error.message ?? '请求失败');
return Promise.reject(error);
},
],
], ],
}; };

Loading…
Cancel
Save