Node.js: Différence entre req.query et req.params

Existe-t-il une différence entre l’obtention des arguments QUERY_STRING via req.query [myParam] et req.params.myParam? Si oui, quand devrais-je utiliser lequel?

Merci.

req.params contient des parameters de route (dans la partie chemin de l’URL), et req.query contient les parameters de requête d’URL (après le ? dans l’URL).

Vous pouvez également utiliser req.param(name) pour rechercher un paramètre aux deux endroits (ainsi que req.body ), mais cette méthode est maintenant obsolète.

Étant donné cet itinéraire

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

et étant donné cette URL http://www.google.com/hi/there?qs1=you&qs2=tube

Tu vas avoir:

req. question

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

req. params

 { param1: 'there' } 

Express req.params >>

Vous devriez pouvoir accéder à la requête en utilisant la notation par points maintenant.

Si vous voulez accéder, dites que vous recevez une requête GET sur /checkEmail?type=email&utm_source=xxxx&email=xxxxx&utm_campaign=XX et que vous voulez extraire la requête utilisée.

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

Les parameters sont utilisés pour le paramètre auto-défini pour recevoir la demande, quelque chose comme (exemple):

 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)}); });