vue.js - 如何将传递给 axios 参数的数组格式化为以下特定格式:[0].mfr=mfr0&[0].mpn=mpn0&[1].mfr=mfr1&[1].mpn=mpn1
问题描述
我正在对一个 web api 进行 axios get 调用,该 web api 正在寻找这种特定格式的查询字符串参数,这似乎不常见:[0].mfr=mfr0&[0].mpn=mpn0&[1].mfr=mfr1& [1].mpn=mpn1
我一直在尝试使用 Qs 库对 paramsSerializer 选项中的参数进行字符串化。
零件 = [{ mfr: "mfr0", mpn: "mpn0" }, { mfr: "mfr1", mpn: "mpn1" }]
findParts(parts, token) {
return axios
.request({
url: "https://<serveraddress>/api/v1/parts/findparts",
method: "get",
params: parts,
headers: {
Authorization: "Bearer " + token,
"Content-Type": "text/plain"
}
})
.catch(error => {
console.log(error);
Vue.notify({
type: "error",
title: "Unable to find parts",
text: "Unable to find parts"
});
});
}
结果
0={"mfr":"mfr0","mpn":"mpn0"}&1={"mfr":"mfr1","mpn":"mp1"}
paramsSerializer: function(params) {
return qs.stringify(params);
},
或者
paramsSerializer: function(params) {
return qs.stringify(params, { arrayFormat: "brackets" });
},
或者
paramsSerializer: function(params) {
return qs.stringify(params, { arrayFormat: "indices" });
},
结果
0[mfr]=mfr0&0[mpn]=mpn0[mfr]=mfr1&1[mpn]=mpn1
paramsSerializer: function(params) {
return qs.stringify(params, { allowDots: true });
},
结果
0.mfr=mf0&0.mpn=mpn0&1.mfr=mfr1&1.mpn=mpn1
我可以创建一个自定义 paramsSerializer,但我想知道是否有办法操纵 qs 或传递的部件数组以获得正确的查询字符串结果,而无需手动创建查询字符串和 url 编码值?
解决方案
推荐阅读
- javascript - 手风琴动画不适用于子元素
- angular - Angular:模块解析失败:意外令牌 (13:15)
- json - 使用 KClass 引用作为具体参数从 JSON 反序列化
- php - 显示具有多对多关系的父 ID
- node.js - 在 Electron 中渲染 NSImageNameComputer
- c++ - 如何防止内联类模板被编译器删除
- amazon-web-services - 在 AWS 放大中构建应用程序时出现错误 403
- c# - 如何从控制器将数据传递给jquery
- python - 特征选择和分类变量
- python - 如何获取 Intellij 输出控制台的终端宽度