Node.js: diferencia entre req.query y req.params

¿Hay alguna diferencia entre obtener argumentos QUERY_STRING a través de req.query [myParam] y req.params.myParam? Si es así, ¿cuándo debería usar cuál?

Gracias.

req.params contiene parámetros de ruta (en la parte de la ruta de la URL) y req.query contiene los parámetros de consulta de URL (después de ? en la URL).

También puede usar req.param(name) para buscar un parámetro en ambos lugares (así como también en req.body ), pero este método ya no está disponible.

Dada esta ruta

 app.get('/hi/:param1', function(req,res){} ); 

y dada esta URL http://www.google.com/hi/there?qs1=you&qs2=tube

Usted tendrá:

req. consulta

 { qs1: 'you', qs2: 'tube' } 

req. params

 { param1: 'there' } 

Express req.params >>

Debería poder acceder a la consulta usando la notación de puntos ahora.

Si desea acceder, /checkEmail?type=email&utm_source=xxxx&email=xxxxx&utm_campaign=XX que está recibiendo una solicitud GET en /checkEmail?type=email&utm_source=xxxx&email=xxxxx&utm_campaign=XX y desea recuperar la consulta utilizada.

 var type = req.query.type, email = req.query.email, utm = { source: req.query.utm_source, campaign: req.query.utm_campaign }; 

Los parámetros se utilizan para el parámetro auto definido para la solicitud de recepción, algo así como (ejemplo):

 router.get('/:userID/food/edit/:foodID', function(req, res){ //sample GET request at '/xavg234/food/edit/jb3552' var userToFind = req.params.userID;//gets xavg234 var foodToSearch = req.params.foodID;//gets jb3552 User.findOne({'userid':userToFind}) //dummy code .then(function(user){...}) .catch(function(err){console.log(err)}); });