我正在尝试对正在构造这样的 url 的 php 服务器发出请求:
website.com/?q=help&q=moreHelp&q=evenMoreHelp
如何使用 superagent 传递具有多个值的相同查询?
我试过这个:
req.get('website.com').query({q:'help',q:'moreHelp',q:'evenMoreHelp'}).end(...)
但我不确定它实际上是否发送了所有三个“q”值。我应该怎么做才能确保他们都被发送?
我正在尝试对正在构造这样的 url 的 php 服务器发出请求:
website.com/?q=help&q=moreHelp&q=evenMoreHelp
如何使用 superagent 传递具有多个值的相同查询?
我试过这个:
req.get('website.com').query({q:'help',q:'moreHelp',q:'evenMoreHelp'}).end(...)
但我不确定它实际上是否发送了所有三个“q”值。我应该怎么做才能确保他们都被发送?
当您以您尝试的方式传递查询时,您肯定不会看到所有三个q
值,因为您正在那里创建一个 JavaScript 对象,是的,只有一个q
值:
$ node
> {q:'help',q:'moreHelp',q:'evenMoreHelp'}
{ q: 'evenMoreHelp' }
Superagent 允许查询字符串,如本例中直接来自文档的:
request
.get('/querystring')
.query('search=Manny&range=1..5')
.end(function(res){
});
因此,如果您传递字符串'q=help&q=moreHelp&q=evenMoreHelp'
,则应该没问题。就像是:
req.get('website.com').query('q=help&q=moreHelp&q=evenMoreHelp').end(...)
如果这太难看,您可以尝试(警告:我没有尝试过):
req.get('website.com')
.query({ q: 'help' })
.query({ q: 'moreHelp' })
.query({ q: 'evenMoreHelp' })
.end(...);
从Superagent 1.5.0 开始,您可以将数组作为查询对象的属性传递,它将生成多个同名的查询参数:
req.get('website.com').query({foo: ['bar1', 'bar2']})
结果是website.com?foo=bar1&foo=bar2
作为旁注,如果您想要 Railsparameter[]=value
语法,那么以下内容对我有用:
req.get('website.com').query({'foo[]': ['bar1', 'bar2']})
我可以确认将参数作为数组传递到查询中效果很好,如下所示:
query: {
productId,
orderStatuses: ['FOO', 'BAR', 'OTHER'],
},