req.query et req.param dans ExpressJS

89

Principales différences entre req.queryet req.paramdans Express

  • En quoi les deux sont-ils différents l'un de l'autre
  • Quand utiliser puis dans quels cas

Supposons qu'un client envoie une paire Android (clé, valeur) dans la demande ........ lequel utiliser?

[ÉDITER]

Supposons qu'android envoie une requête POST -> L'intention est d'envoyer (clé, valeur) au client et que le serveur doit effectuer une requête de base de données basée sur la valeur du serveur et renvoyer la réponse JSON

Regardez :: cette question pour le programme i référencé: : programme simple Express pour l' interrogation d' un résultat

William Jones
la source
1
Voulez-vous dire req.queryet req.param?
arb
1
Oui ! ......... J'ai également modifié la question

Réponses:

115

req.query renverra un objet JS une fois la chaîne de requête analysée.

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

req.paramsrenverra les paramètres de l'itinéraire correspondant. Si votre route est / user /: id et que vous faites une demande à / user / 5 - req.paramscela donnerait{id: "5"}

req.paramest une fonction qui élimine les paramètres de la requête. Tout cela peut être trouvé ici .

MISE À JOUR

Si le verbe est a POSTet que vous utilisez bodyParser, vous devriez pouvoir obtenir le corps du formulaire dans lequel vous travaillez req.body. Ce sera la version JS analysée du POSTformulaire ed.

arb
la source
Merci, alors Supposons qu'un client envoie une paire Android (clé, valeur) dans la demande ........ lequel utiliser dans Express?
Il n'y a aucun moyen de répondre à cette question sans voir la demande en question.
arb
Veuillez regarder la question mise à jour ..... J'ai également mentionné le lien vers le programme que j'utilise en express dans l'une des questions que j'ai postées ..... veuillez ajouter un retour!
@Iplay si cette réponse vous a aidé, pensez à la marquer comme réponse à cette question. Merci.
arb
15

req.queryest la chaîne de requête envoyée au serveur, exemple /page?test = 1 , req.paramcorrespond aux paramètres transmis au gestionnaire.

app.get('/user/:id', handler);, aller /user/blah, req.param.idreviendrait blah;

OneOfOne
la source
Merci, alors Supposons qu'un client envoie une paire Android (clé, valeur) dans la demande ........ lequel utiliser?
1
Je n'ai aucune idée de ce dont vous parlez, si c'est une demande POST, ce sera dans le req.data, si c'est GET t'll être dansreq.param
OneOfOne
Salut, pourriez-vous s'il vous plaît me dire comment vérifier req.params par rapport à undefined?
Arj 1411
@AnandRaj, ce serait juste vide, alors vérifiezc.Param("id") == ""
OneOfOne
@OneOfOne, merci pour votre réponse. Laissez-moi vérifier et vous mettre à jour
Arj 1411
14

Je suggérerais d'utiliser la suite

req.param('<param_name>')

req.param ("") fonctionne comme suit

La recherche est effectuée dans l'ordre suivant:

req.params
req.body
req.query

L'accès direct à req.body, req.params et req.query doit être privilégié pour plus de clarté - à moins que vous n'acceptiez vraiment l'entrée de chaque objet.

Réf: http://expressjs.com/4x/api.html#req.param

Abhijit Gaikwad
la source
1
Salut, pourriez-vous s'il vous plaît me dire comment vérifier req.params par rapport à undefined?
Arj 1411
@AnandRaj qu'entendez-vous par indéfini? voulez-vous dire que les paramètres ne sont pas connus?
Abhijit Gaikwad
ce que je voulais dire, c'est quand j'ai vérifié le type de req.params qu'il montre indéfini. Mon objectif est de vérifier si req.params. <Any URI parameter> est nul ou non
Arj 1411
@AnandRaj pouvez-vous s'il vous plaît poster votre code? Le code suivant fonctionne pour moi var express = require ('express'); var app = express (); app.get ('/', function (req, res) {console.log (req.params); res.send (req.params);}); app.listen (3000);
Abhijit Gaikwad
@AnandRaj try if (reqParams.hasOwnProperty ('deviceType')) {}
Abhijit Gaikwad
9

Passer des paramètres

GET request to "/cars/honda" 

renvoie une liste de modèles de voitures Honda

Passer la requête

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

renvoie une liste de modèles de voitures Honda, mais filtrée de sorte que seuls les modèles dont la couleur d'origine est bleue sont renvoyés.

Cela n'a pas de sens d'ajouter ces filtres dans les paramètres d'URL (/ car / honda / color / blue) parce que selon REST, cela impliquerait que nous voulons obtenir un tas d'informations sur la couleur "bleu". Puisque ce que nous voulons vraiment, c'est une liste filtrée de modèles Honda, nous utilisons des chaînes de requête pour filtrer les résultats renvoyés.

Notez que les chaînes de requête ne sont en réalité que des paires {clé: valeur} dans un format légèrement différent:? Clé1 = valeur1 & clé2 = valeur2 & clé3 = valeur3.

Shivam Chhetri
la source