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,47 +58,32 @@ const transform: AxiosTransform = {
58 58
59 // 这里逻辑可以根据项目进行修改 59 // 这里逻辑可以根据项目进行修改
60 const hasSuccess = data && Reflect.has(data, 'code') && code === ResultEnum.SUCCESS; 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 return result; 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 // 请求之前处理config 89 // 请求之前处理config