使用axios的get方法传包含数组的对象

起因

使用axios进行前后端传值交互时传递的参数是对象,其中包含了一个数组,发送给后端的参数格式为‘’list[]=1&list[]=2‘’,后端无法解析这个参数

解决方案

我们将数据调整为list=1&list=2这种格式

import request from '@/utils/request'
export function fetchList(params) {
  return request({
    url: 'xxxxxxx',
    method: 'get',
    params: params,
    paramsSerializer: function (params) {
      const keys = Object.keys(params)
      const arr = []
      keys.forEach(item => {
        if (Array.isArray(params[item])) {
          console.log(params[item]);
          if (params[item].length == 0) {

          } else {
            const url = params[item].map(_ => `${item}=${_}`).join('&')
            arr.push(url)
          }
        } else {
          if (params[item] == null) {

          } else { arr.push(`${item}=${params[item]}`) }
        }
      })
      const result = arr.join('&')
      console.log(result)
      return `${result}`
    }
  })
}

原因

axios的get请求中会将对象转为url中的解码方式将array解码为arr[]=value,这种格式java获取参数是有问题的,所以我们直接通过axios预先设计的序列化参数paramsSerializer,来自己生成url

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐