javascriptnode.jssuperagent

How do I send a request with superagent that uses the same query parameter


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?


Solution

  • 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(...);