axios get 发送数组的坑

起因,公司后台使用restfull 风格的api , 后台接口他们已经用个方法完全封装好了,所以所有 请求的得在前端处理。

有个报表查询 用数组 发送请求的, 正常用axios 发送请求后 后台返回我发送的不是一个数组 。我当场跑去和后台撕逼,然后撕不赢 说我的请求不是正常的http请求。????? 可能是我太菜吧。然后去百度方法。
找到了qs 处理的方法。

复现 错误的代码

  
let data = {
  a:'11',
  b:[1,2,3]
}  
let datas = await getInfo(data)

控制台图


Snipaste_2019-08-14_10-47-13.png

??? 当场懵逼 数组不是这样吗?(确实不是这样的的)

错误代码2

  
let data = {
  a:'11',
  b: JSON.stringif( [1,2,3])
}  
let datas = await getInfo(data)

控制台图


Snipaste_2019-08-14_10-50-01.png

后台说也不是这样 ... 当场奔溃
然后去网上找到了qs axios 自带qs 可能也考虑了这个问题吧
在请求时加上一行代码后

axios.get(url, {
    params: {
     ids: [1,2,3],
     type: 1
    },
    paramsSerializer: params => {
      return qs.stringify(params, { indices: false })
    }})

也不对啊 他吧 数组下标变成了 key

微信截图_20190814110237.png

微信截图_20190814110301.png

然后我去npm 上看了下qs 文档 找到了下面这句话


qs.png

意思是 把 a[0]=1 变成 a=1&a=2&a=3 ???? WTF 网上代码太不靠谱了吧

改变后

axios.get(url, {
    params: {
     ids: [1,2,3],
     type: 1
    },
    paramsSerializer: params => {
      return qs.stringify(params)
    }})

最终正确的数据截图

end.png

是它 是它 就是 它 正确的后台要的格式.....

你可能感兴趣的:(axios get 发送数组的坑)