I am trying to make a request against a php server that is constructing the url like this:
website.com/?q=help&q=moreHelp&q=evenMoreHelp
How do I use superagent to pass the same query with multiple values?
I've tried this:
req.get('website.com').query({q:'help',q:'moreHelp',q:'evenMoreHelp'}).end(...)
But I'm not sure it is actually sending all three 'q' values. What am I supposed to do to make sure they all get sent?
You definitely will not see all three q
values when you pass the query in the manner you are trying, because you are making a JavaScript object there and yes, there will only be one q
value:
$ node
> {q:'help',q:'moreHelp',q:'evenMoreHelp'}
{ q: 'evenMoreHelp' }
Superagent allows query strings, as in this example straight from the docs :
request
.get('/querystring')
.query('search=Manny&range=1..5')
.end(function(res){
});
So if you pass the string 'q=help&q=moreHelp&q=evenMoreHelp'
you should be okay. Something like:
req.get('website.com').query('q=help&q=moreHelp&q=evenMoreHelp').end(...)
If this is too ugly, you can try (WARNING: I have not tried this):
req.get('website.com')
.query({ q: 'help' })
.query({ q: 'moreHelp' })
.query({ q: 'evenMoreHelp' })
.end(...);
As of Superagent 1.5.0 you can pass an array as a property of the query object and it will generate multiple query parameters of the same name:
req.get('website.com').query({foo: ['bar1', 'bar2']})
results in website.com?foo=bar1&foo=bar2
As a side note, if you want Rails parameter[]=value
syntax then the following works for me:
req.get('website.com').query({'foo[]': ['bar1', 'bar2']})
I can confirm that passing the parameters as an array into the query works great, like so:
query: {
productId,
orderStatuses: ['FOO', 'BAR', 'OTHER'],
},
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.