Browse Source

feat:umi-request拦截器拦截特定code没有message提示的问题

lanjianrong 4 years ago
parent
commit
b96702ec3f
1 changed files with 14 additions and 13 deletions
  1. 14 13
      utils/request.js

+ 14 - 13
utils/request.js

@@ -85,11 +85,20 @@ request.interceptors.request.use((url, options) => {
   return { url, options }
 })
 const refreshTokenIfNeed = async (response, config) => {
+  const res = await response.clone().json()
   if (
-    response &&
-    response.data &&
-    response.data.code &&
-    consts.TOKEN_INVALID_CODE.includes(response.data.code)
+    res &&
+    res.code !== consts.RET_CODE.SUCCESS &&
+    !consts.TOKEN_INVALID_CODE.includes(res.code)
+  ) {
+    message.error((res && res.msg) || '请求错误')
+    return response
+  }
+
+  if (
+    res &&
+    res.code &&
+    consts.TOKEN_INVALID_CODE.includes(res.code)
   ) {
     const account = getUserAccount()
     if (!account || !currentTokenRetry) {
@@ -113,15 +122,7 @@ const refreshTokenIfNeed = async (response, config) => {
 }
 
 // 响应拦截器
-request.interceptors.response.use(async (response, options) => {
-  if (
-    response &&
-    response.data &&
-    response.data.code !== consts.RET_CODE.SUCCESS &&
-    !consts.TOKEN_INVALID_CODE.includes(response.data.code)
-  ) {
-    message.error((response.data && response.data.msg) || '请求错误!')
-  }
+request.interceptors.response.use((response, options) => {
   return refreshTokenIfNeed(response, options)
 })