lrf 8 months ago
parent
commit
925c5e3d36
1 changed files with 48 additions and 21 deletions
  1. 48 21
      src/utils/axios-wrapper.js

+ 48 - 21
src/utils/axios-wrapper.js

@@ -1,7 +1,7 @@
 /* eslint-disable no-console */
 /* eslint-disable no-console */
 /* eslint-disable no-param-reassign */
 /* eslint-disable no-param-reassign */
 
 
-import { get, isObject, pick } from 'lodash-es'
+import { get, isObject, pick, isArray } from 'lodash-es'
 import Axios from 'axios'
 import Axios from 'axios'
 import { trimData, isNullOrUndefined } from './util-methods'
 import { trimData, isNullOrUndefined } from './util-methods'
 import { ErrorCode } from './error-code'
 import { ErrorCode } from './error-code'
@@ -40,6 +40,27 @@ export class AxiosWrapper {
     })
     })
     return uri
     return uri
   }
   }
+  // 新函数,重新生成url,并且把参数拼进uri中
+  static getUriWithQuery(uri, query) {
+    if (!uri || !query) return uri
+    uri = `${uri}?`
+    const arr = []
+    for (const i in query) {
+      const val = query[i]
+      if (isArray(val)) {
+        for (const v of val) {
+          const str = `${i}=${v}`
+          arr.push(str)
+        }
+      } else {
+        const str = `${i}=${val}`
+        arr.push(str)
+      }
+    }
+    const sign = '&'
+    uri = `${uri}${arr.join(sign)}`
+    return uri
+  }
 
 
   $get(uri, query, options) {
   $get(uri, query, options) {
     return this.$request(uri, undefined, query, options)
     return this.$request(uri, undefined, query, options)
@@ -53,26 +74,32 @@ export class AxiosWrapper {
     return this.$request(uri, data, query, options)
     return this.$request(uri, data, query, options)
   }
   }
   async $request(uri, data, query, options) {
   async $request(uri, data, query, options) {
-    if (query && isObject(query)) {
-      const keys = Object.keys(query)
-      for (const key of keys) {
-        const val = get(query, key)
-        if (val === '') {
-          delete query[key]
-        }
-      }
-    }
-    if (isObject(query) && isObject(options)) {
-      options = { ...options, params: query, method: 'get' }
-    } else if (isObject(query) && !query.params) {
-      options = { params: query }
-    } else if (isObject(query) && query.params) {
-      options = query
-    }
-    if (!options) options = {}
-    if (options.params) options.params = trimData(options.params, null, null)
-    const params = get(options, 'params')
-    const url = AxiosWrapper.merge(uri, params)
+    // if (query && isObject(query)) {
+    //   const keys = Object.keys(query)
+    //   for (const key of keys) {
+    //     const val = get(query, key)
+    //     if (val === '') {
+    //       delete query[key]
+    //     }
+    //   }
+    // }
+    // if (isObject(query) && isObject(options)) {
+    //   options = { ...options, params: query, method: 'get' }
+    // } else if (isObject(query) && !query.params) {
+    //   options = { params: query }
+    // } else if (isObject(query) && query.params) {
+    //   options = query
+    // }
+    // if (!options) options = {}
+    // if (options.params) options.params = trimData(options.params, null, null)
+    // const params = get(options, 'params')
+    // const url = AxiosWrapper.merge(uri, params)
+    /**
+     * 需要处理 query,options
+     * query: 将值拼入uri中
+     * options保持原数据即可,一般不会用
+     */
+    const url = AxiosWrapper.getUriWithQuery(uri, query)
     currentRequests += 1
     currentRequests += 1
     try {
     try {
       let returnData
       let returnData