web-dev-qa-db-fra.com

Pourquoi les req.params, req.query et req.body existent-ils?

Je suis nouveau sur Node.js et Express et maintenant j'observe que lorsque je change la méthode sur mon application appelante, les paramètres sont dans req.param([name]), req.body.[name] ou req.query et cela dépend de la méthode. Maintenant, mes questions sont deux:

  1. Y a-t-il des différences entre ces trois objets? (quelque chose qui pourrait expliquer pourquoi une méthode différente remplit un objet différent)
  2. Y a-t-il des "problèmes" si je crée une fonction/un module qui vérifie simplement qui est complet et, par exemple, modifie l'objet req.body pour que je puisse appeler cet objet à chaque fois pour récupérer les paramètres?

EDIT: Après la réponse de @ jfriend00, j'expliquerais mieux mon dilemme: je développe une API et je créerais un module qui pourrait vérifier les données transmises avec les différentes méthodes, pour l'instant j'écris quelque chose comme:

if(req.method== 'PUT' || req.method=='POST')
    x=req.body.x;
else
    x=req.query.x;

et je ferais quelque chose au début comme:

if(req.query!=null)
    req.body=req.query;

donc, après, dans tous mes chèques, je contrôlerai le corps et non les autres! Pensez-vous que c'est une mauvaise pratique?

6
Filippo1980

Les trois propriétés proviennent de différentes sources:

req.query provient de paramètres de requête dans l'URL tels que http://foo.com/somePath?name=tedreq.query.name === "ted".

req.params provient de segments de chemin de l'URL qui correspondent à un paramètre de la définition de l'itinéraire, tel /song/:songid. Ainsi, avec un itinéraire utilisant cette désignation et une URL telle que /song/48586, puis req.params.songid === "48586".

req.body les propriétés proviennent d'un post de formulaire où les données du formulaire (qui sont soumises dans le contenu du corps) ont été analysées dans les propriétés de la balise body.

Vous utilisez la propriété appropriée qui correspond à la source des données qui vous intéressent.

Pourquoi existe-t-il des req.params, req.query et req.body?

Pour vous donner un accès simplifié à trois types de données différents.

17
jfriend00