Browse Source

5开头的请求失败,重连2次

刘洋 1 năm trước cách đây
mục cha
commit
71ecc382dd
2 tập tin đã thay đổi với 14 bổ sung0 xóa
  1. 1 0
      package.json
  2. 13 0
      src/plugins/request/index.ts

+ 1 - 0
package.json

@@ -21,6 +21,7 @@
     "@vueuse/core": "9.3.0",
     "ant-design-vue": "^4.1.2",
     "axios": "0.27.2",
+    "axios-retry": "^4.1.0",
     "big.js": "6.2.1",
     "copy-to-clipboard": "3.3.2",
     "crypto-js": "4.1.1",

+ 13 - 0
src/plugins/request/index.ts

@@ -1,4 +1,5 @@
 import axios, { AxiosError } from 'axios'
+import axiosRetry from 'axios-retry'
 import { ElMessage } from 'element-plus'
 import { setupAuthSign, transformRequestData, transformGetParams, appendExamId } from '@/plugins/request/plugin'
 import { filterEmpty, downloadBlob, extractFileName } from '@/utils/common'
@@ -19,6 +20,15 @@ const request = axios.create({
   },
 })
 
+axiosRetry(request, {
+  retries: 2,
+  retryDelay: () => 300,
+  shouldResetTimeout: true,
+  retryCondition(error) {
+    return (error?.response?.status || '').toString().startsWith('5')
+  },
+})
+
 request.interceptors.request.use(
   (config) => {
     if (!config.url) {
@@ -79,6 +89,9 @@ request.interceptors.response.use(
           return Promise.reject(error)
         }
         let msg = ''
+        if ((error?.response?.status || '').toString().startsWith('5')) {
+          msg = '服务器异常,请联系管理员'
+        }
         if (error.config?.responseType === 'blob') {
           try {
             const e = JSON.parse(await error?.response?.data?.text())