26

I have a request being sent to the server:

"/stuff?a=a&b=b&c=c"

Using express, how do I get these values?

I have tried the following...

app.get( "/stuff?:a&:b&:c", function( req, res ){});

...however it does not seem to recognize the route.

Thanks (in advance) for your help.

user1031947
  • 6,294
  • 16
  • 55
  • 88

2 Answers2

38

It's not a good idea to use a query string inside a route.

In Express logic you need create a route for "/stuff". The query string will be available in req.query.

mikemaccana
  • 110,530
  • 99
  • 389
  • 494
Dmitry Manannikov
  • 1,124
  • 1
  • 10
  • 14
  • 6
    To add to this, Express explicitly states "Query strings are not considered when performing these matches" - http://expressjs.com/api.html – Hector Correa Feb 04 '13 at 14:07
32

You can declare your route directly with /stuff, then query parameters are accessible through req.query, which is a JSON object. Here's your example:

app.get("/stuff", function(req, res) {
    var a = req.query.a;
    ...
});

In your case, req.query is equal to:

{ a: 'a',
  b: 'b',
  c: 'c' }

In Express' documentation (either 4.x and 3.x) you can find additional examples: Express - req.query.

Marco
  • 700
  • 1
  • 14
  • 26