预期查询字符串:
http://fqdn/page?categoryID=1&categoryID=2
Axios获取请求:
fetchNumbers () {
return axios.get(globalConfig.CATS_URL, {
params: {
...(this.category ? { categoryId: this.category } : {})
}
})
.then((resp) => {
// console.log(resp)
})
.catch((err) => {
console.log(err)
})
}
正如你所看到的,它可以完美地使用1个参数的1个值,但是如果我想使用多个值-它不起作用,我尝试使用数组:
...(this.category ? { categoryId: [1, 2] } : {})
但它会以这种方式返回:
http://fqdn/page?categoryID[]=1&categoryID[]=2
所以它只是不工作。看了看这个问题:使用axios在GET中传递一个带有多个值的参数的对象作为查询字符串
但想不出,他是怎么解决这个问题的。
3条答案
按热度按时间hl0ma9xz1#
您可以使用Axios的
paramsSerializer
自定义请求中参数的序列化。请注意,
URLSearchParams
按您期望的方式序列化数组数据:因此,您可以在
paramsSerializer
中使用该类,如下所示:demo
dwbf0jvd2#
这不是一个axios相关的问题。这取决于您的后端服务是否能够以这种方式理解查询参数(似乎是框架相关的)。从您的问题中,我认为当发送像下面这样的queryParams时,它不起作用
它期望
你可以做的是将数组转换成这样的字符串,然后将其传递给axios中的params。更新代码中的以下部分,它应该可以解决你的问题。
看看下面的帖子
How to pass an array within a query string?
pieyvz9o3#
如果你在这里寻找如何实现逗号分隔的值,像这样:
?size=4&sort=modifiedOn,name
这样做:
序列化查询字符串中的结果:
?size=4&sort=modifiedOn%2Cname