vue中用axios发请求,需要传一个数组,数组中是对对象,直接传的话,会默认调用string方法传入的是[object,object],然后用JSON.stringify方法转换了一下,还是不行,数组要怎样传啊?
productList:JSON.stringify([{
priceStockId:this.priceStockId,
productTypeName:this.productTypeName,
productNoName:this.productNoName,
productValueName:this.productValueName
}])
报415错误
经过实验,axios的get方法中使用params时对于js数组类型的参数的默认操作比较诡异,会使得参数名后带上'[]'字符串,不得不说是基本反非PHP系后端的直觉了 /手动斜眼
而使用JSON.stringify()处理也不是那么好,会将参数变成字符串类型,例如原数组id为[1,2,3],这样处理后后端接受的就变为'id=[1,2,3]'了,可以解析,但对于使用某些框架自带解析的来说这简直是崩坏画风。
究其原因是axios对params的序列化采用的是qs库
因此可以使用qs自带的 arrayFormat 参数配置解决这个问题,大致配置如下:
这样后端获得参数就比较正常了,为'id=1&id=2&id=3'
参考文档: