123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- import { RequestConfig } from './request';
- enum ErrorShowType {
- SILENT = 0,
- WARN_MESSAGE = 1,
- ERROR_MESSAGE = 2,
- NOTIFICATION = 3,
- REDIRECT = 9,
- }
- interface ResponseStructure {
- success: boolean;
- data: any;
- errorCode?: number;
- errorMessage?: string;
- showType?: ErrorShowType;
- }
- export const request: RequestConfig = {
-
- timeout: 1000,
- headers: {'X-Requested-With': 'XMLHttpRequest'},
-
- errorConfig: {
-
- errorThrower: (res: ResponseStructure) => {
- const { success, data, errorCode, errorMessage, showType } = res;
- if (!success) {
- const error: any = new Error(errorMessage);
- error.name = 'BizError';
- error.info = { errorCode, errorMessage, showType, data };
- throw error;
- }
- },
-
- errorHandler: (error: any, opts: any) => {
- if (opts?.skipErrorHandler) throw error;
-
- if (error.name === 'BizError') {
- const errorInfo: ResponseStructure | undefined = error.info;
- if (errorInfo) {
- const { errorMessage, errorCode } = errorInfo;
- switch (errorInfo.showType) {
- case ErrorShowType.SILENT:
-
- break;
- case ErrorShowType.WARN_MESSAGE:
- message.warn(errorMessage);
- break;
- case ErrorShowType.ERROR_MESSAGE:
- message.error(errorMessage);
- break;
- case ErrorShowType.NOTIFICATION:
- notification.open({
- description: errorMessage,
- message: errorCode,
- });
- break;
- case ErrorShowType.REDIRECT:
-
- break;
- default:
- message.error(errorMessage);
- }
- }
- } else if (error.response) {
-
-
- message.error(`Response status:${error.response.status}`);
- } else if (error.request) {
-
-
-
- message.error('None response! Please retry.');
- } else {
-
- message.error('Request error, please retry.');
- }
- },
- },
-
- requestInterceptors: [
- (config) => {
-
- const url = config.url.concat('?token = 123');
- return { ...config, url};
- }
- ],
-
- responseInterceptors: [
- (response) => {
-
- const { data } = response;
- if(!data.success){
- message.error('请求失败!');
- }
- return response;
- }
- ]
- };
|