req.query and req.param in ExpressJS

node.jsExpress

node.js Problem Overview


Main differences between req.query and req.param in Express

  • How are Both different from each other
  • When to use then in what cases

Suppose a client sends say Android (Key,value) pair in the request ........ which one to use ?

[EDIT]

Suppose android sends a POST request -> Intention is to send (Key,Value) to client and the server should perform a database query based on the value in the server and return JSON response

Look:: at this question for the program i referenced:: https://stackoverflow.com/q/18515313/2582071

node.js Solutions


Solution 1 - node.js

req.query will return a JS object after the query string is parsed.

/user?name=tom&age=55 - req.query would yield {name:"tom", age: "55"}

req.params will return parameters in the matched route. If your route is /user/:id and you make a request to /user/5 - req.params would yield {id: "5"}

req.param is a function that peels parameters out of the request. All of this can be found here.

UPDATE

If the verb is a POST and you are using bodyParser, then you should be able to get the form body in you function with req.body. That will be the parsed JS version of the POSTed form.

Solution 2 - node.js

req.query is the query string sent to the server, example /page?test=1, req.param is the parameters passed to the handler.

app.get('/user/:id', handler);, going to /user/blah, req.param.id would return blah;

Solution 3 - node.js

I would suggest using following

req.param('<param_name>')

req.param("") works as following

Lookup is performed in the following order:

req.params
req.body
req.query

Direct access to req.body, req.params, and req.query should be favoured for clarity - unless you truly accept input from each object.

Ref:http://expressjs.com/4x/api.html#req.param

Solution 4 - node.js

Passing params

GET request to "/cars/honda" 

returns a list of Honda car models

Passing query

GET request to "/car/honda?color=blue"

returns a list of Honda car models, but filtered so only models with an stock color of blue are returned.

It doesn't make sense to add those filters into the URL parameters (/car/honda/color/blue) because according to REST, that would imply that we want to get a bunch of information about the color "blue". Since what we really want is a filtered list of Honda models, we use query strings to filter down the results that get returned.

Notice that the query strings are really just { key: value } pairs in a slightly different format: ?key1=value1&key2=value2&key3=value3.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser2582071View Question on Stackoverflow
Solution 1 - node.jsarbView Answer on Stackoverflow
Solution 2 - node.jsOneOfOneView Answer on Stackoverflow
Solution 3 - node.jsAbhijit GaikwadView Answer on Stackoverflow
Solution 4 - node.jsShivam ChhetriView Answer on Stackoverflow