Commit b69dcd79d742fd171302ce0f48c7750d60da217f

Authored by 无木
1 parent 4da3d2c5

fix(axios): transformRequestHook logic error

Showing 1 changed file with 23 additions and 38 deletions
src/utils/http/axios/index.ts
... ... @@ -58,47 +58,32 @@ const transform: AxiosTransform = {
58 58  
59 59 // 这里逻辑可以根据项目进行修改
60 60 const hasSuccess = data && Reflect.has(data, 'code') && code === ResultEnum.SUCCESS;
61   - if (!hasSuccess) {
62   - if (message) {
63   - // errorMessageMode=‘modal’的时候会显示modal错误弹窗,而不是消息提示,用于一些比较重要的错误
64   - if (options.errorMessageMode === 'modal') {
65   - createErrorModal({ title: t('sys.api.errorTip'), content: message });
66   - } else if (options.errorMessageMode === 'message') {
67   - createMessage.error(message);
68   - }
69   - }
70   - throw new Error(message);
71   - //return errorResult;
72   - }
73   -
74   - // 接口请求成功,直接返回结果
75   - if (code === ResultEnum.SUCCESS) {
  61 + if (hasSuccess) {
76 62 return result;
77 63 }
78   - // 接口请求错误,统一提示错误信息
79   - if (code === ResultEnum.ERROR) {
80   - if (message) {
81   - createMessage.error(data.message);
82   - throw new Error(message);
83   - } else {
84   - const msg = t('sys.api.errorMessage');
85   - createMessage.error(msg);
86   - throw new Error(msg);
87   - }
88   - //return errorResult;
89   - }
90   - // 登录超时
91   - if (code === ResultEnum.TIMEOUT) {
92   - const timeoutMsg = t('sys.api.timeoutMessage');
93   - createErrorModal({
94   - title: t('sys.api.operationFailed'),
95   - content: timeoutMsg,
96   - });
97   - throw new Error(timeoutMsg);
98   - //return errorResult;
  64 +
  65 + // 在此处根据自己项目的实际情况对不同的code执行不同的操作
  66 + // 如果不希望中断当前请求,请return数据,否则直接抛出异常即可
  67 + switch (code) {
  68 + case ResultEnum.TIMEOUT:
  69 + const timeoutMsg = t('sys.api.timeoutMessage');
  70 + createErrorModal({
  71 + title: t('sys.api.operationFailed'),
  72 + content: timeoutMsg,
  73 + });
  74 + throw new Error(timeoutMsg);
  75 + default:
  76 + if (message) {
  77 + // errorMessageMode=‘modal’的时候会显示modal错误弹窗,而不是消息提示,用于一些比较重要的错误
  78 + // errorMessageMode='none' 一般是调用时明确表示不希望自动弹出错误提示
  79 + if (options.errorMessageMode === 'modal') {
  80 + createErrorModal({ title: t('sys.api.errorTip'), content: message });
  81 + } else if (options.errorMessageMode === 'message') {
  82 + createMessage.error(message);
  83 + }
  84 + }
99 85 }
100   - throw new Error(t('sys.api.apiRequestFailed'));
101   - //return errorResult;
  86 + throw new Error(message || t('sys.api.apiRequestFailed'));
102 87 },
103 88  
104 89 // 请求之前处理config
... ...