起因,公司后台使用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
是它 是它 就是 它 正确的后台要的格式.....