Je sais comment obtenir les paramètres pour des requêtes comme celle-ci:
app.get('/sample/:id', routes.sample);
Dans ce cas, je peux utiliser req.params.id
pour obtenir le paramètre (par exemple 2
dans /sample/2
).
Cependant, pour les URL comme /sample/2?color=red
, comment puis-je accéder à la variable color
?
J'ai essayé req.params.color
mais ça n'a pas marché.
node.js
express
query-string
Hanfei Sun
la source
la source
id
votre fonction comme ceci:var sampleId = req.params.id;
.req.params.whatever
dans les dernières versions.req.params
C'est différent de çareq.query
! expressjs.com/en/api.html#req.params expressjs.com/en/api.html#req.query @adelriosantiagoUtilisez req.query, pour obtenir la valeur he dans le paramètre de chaîne de requête de l'itinéraire. Reportez-vous à la requête . Dites si dans un itinéraire, http: // localhost: 3000 /? Name = satyam vous voulez obtenir la valeur du paramètre name, alors votre gestionnaire d'itinéraire 'Get' ira comme ceci: -
la source
Mise à jour:
req.param()
est désormais obsolète, donc à l'avenir, n'utilisez pas cette réponse.Votre réponse est le moyen préféré de le faire, mais je pensais que je soulignerais que vous pouvez également accéder aux paramètres d'URL, de publication et d'itinéraire avec
req.param(parameterName, defaultValue)
.Dans ton cas:
Du guide express:
Notez que le guide indique ce qui suit:
Cependant, dans la pratique, j'ai trouvé
req.param()
suffisamment clair et facilite certains types de refactoring.la source
La chaîne de requête et les paramètres sont différents.
Vous devez utiliser les deux dans une URL de routage unique
Veuillez vérifier l'exemple ci-dessous peut vous être utile.
Obtenez le lien pour passer votre deuxième segment est votre exemple id: http: // localhost: port / sample / 123
Si vous rencontrez un problème, veuillez utiliser des variables de passage comme chaîne de requête à l'aide de "?" opérateur
Obtenez un lien comme cet exemple: http: // localhost: port / sample? Id = 123
Les deux dans un seul exemple
Obtenir un exemple de lien: http: // localhost: port / sample / 123? Id = 123
la source
@ La réponse de Zugwait est correcte.
req.param()
est obsolète. Vous devez utiliserreq.params
,req.query
oureq.body
.Mais pour être plus clair:
req.params
sera rempli uniquement avec les valeurs de l'itinéraire. Autrement dit, si vous avez un itinéraire comme/users/:id
, vous pouvez accéderid
soit àreq.params.id
ou àreq.params['id']
.req.query
etreq.body
seront remplis avec tous les paramètres, qu'ils soient ou non sur la route. Bien sûr, les paramètres de la chaîne de requête seront disponibles dansreq.query
et les paramètres d'un corps de message seront disponibles dansreq.body
.Donc, en répondant à vos questions, comme ce
color
n'est pas dans l'itinéraire, vous devriez pouvoir l'obtenir en utilisantreq.query.color
oureq.query['color']
.la source
Le manuel express indique que vous devez utiliser req.query pour accéder à QueryString.
la source
la source
Une belle technique que j'ai commencé à utiliser avec certaines de mes applications sur express consiste à créer un objet qui fusionne la requête, les paramètres et les champs de corps de l'objet de demande express.
Ensuite, dans votre corps de contrôleur, ou n'importe où ailleurs dans le cadre de la chaîne de demande express, vous pouvez utiliser quelque chose comme ci-dessous:
Cela rend agréable et pratique de simplement "fouiller" dans toutes les "données personnalisées" qu'un utilisateur peut avoir envoyées avec sa demande.
Remarque
Pourquoi le champ «accessoires»? Étant donné qu'il s'agissait d'un extrait coupé, j'utilise cette technique dans un certain nombre de mes API, je stocke également des données d'authentification / autorisation sur cet objet, exemple ci-dessous.
la source