Explorar el Código

fix: axios GET 请求数组用 repeat 格式序列化,避免方括号语法

axios 默认把数组序列化成 key[]=v1&key[]=v2。后端
@RequestParam Map<String,Object> 拿不到方括号 key 的多值。
改用 qs 的 arrayFormat:'repeat' 让数组序列化成
key=v1&key=v2,与 Spring RequestParamMap 兼容。

所有 GET 请求的数组参数都受益,不再依赖后端做 fallback。
Developer hace 1 mes
padre
commit
de385591ce
Se han modificado 1 ficheros con 5 adiciones y 1 borrados
  1. 5 1
      src/utils/request.js

+ 5 - 1
src/utils/request.js

@@ -8,7 +8,11 @@ import isPlainObject from 'lodash/isPlainObject'
 const http = axios.create({
   baseURL: window.SITE_CONFIG['apiURL'],
   timeout: 1000 * 180,
-  withCredentials: true
+  withCredentials: true,
+  // axios 默认把数组序列化成 key[]=v1&key[]=v2(方括号语法),
+  // Spring 的 @RequestParam Map<String,Object> 对这种 key 无法获取多值。
+  // 改用 qs 的 repeat 格式: key=v1&key=v2,与 Spring 的 RequestParamMap 兼容。
+  paramsSerializer: params => qs.stringify(params, { arrayFormat: 'repeat' })
 })
 
 /**