Node.js – How to access the GET parameters after “?” in Express

expressnode.jsquery-string

I know how to get the params for queries like this:

app.get('/sample/:id', routes.sample);

In this case, I can use req.params.id to get the parameter (e.g. 2 in /sample/2).

However, for url like /sample/2?color=red, how can I access the variable color?

I tried req.params.color but it didn't work.

Best Answer

So, after checking out the express reference, I found that req.query.color would return me the value I'm looking for.

req.params refers to items with a ':' in the URL and req.query refers to items associated with the '?'

Example:

GET /something?color1=red&color2=blue

Then in express, the handler:

app.get('/something', (req, res) => {
    req.query.color1 === 'red'  // true
    req.query.color2 === 'blue' // true
})