1561 votes

Comment obtenir des variables GET (chaîne de requête) en Express.js sur Node.js ?

Pouvons-nous obtenir les variables dans la chaîne de requête en Node.js comme nous les obtenons en $_GET en PHP ?

Je sais que dans Node.js nous pouvons obtenir l'URL dans la requête. Existe-t-il une méthode pour obtenir les paramètres de la chaîne de requête ?

6 votes

La réponse de @whitequark (celle qui a reçu le plus de votes) devrait être marquée comme étant la bonne réponse. Pourriez-vous la mettre à jour pour les autres personnes qui se posent la même question que vous et qui tombent sur votre question ?

0 votes

Utilisez l'objet de requête dans la demande express - voici les éléments suivants exemples d'utilisation de la requête express

0 votes

@Dev01 il n'est pas actif depuis 2014 lol

1897voto

whitequark Points 5775

Puisque vous avez mentionné Express.js dans vos balises, voici une réponse spécifique à Express : utiliser req.query . Par exemple

var express = require('express');
var app = express();

app.get('/', function(req, res){
  res.send('id: ' + req.query.id);
});

app.listen(3000);

75 votes

Il convient de mentionner que vous devez utiliser req.query.id il n'est pas nécessaire d'utiliser la notation entre parenthèses.

0 votes

Pour installer express, faites-le : yes | sudo npm install -g express --- J'ai essayé d'éditer mais Alexis King a été inversé.

0 votes

Dans sa question, il cherchait un moyen d'obtenir tous les paramètres de la chaîne de requête comme un tableau. La réponse correcte est la suivante : app.get('/', function(req, res){ console.log(req.query) ; }) ;

1501voto

Marcus Granström Points 2810

Dans Express, c'est déjà fait pour vous et vous pouvez simplement utiliser req.query pour ça :

var id = req.query.id; // $_GET["id"]

Sinon, dans NodeJS, vous pouvez accéder à req.url et la fonction intégrée url module pour url.parse manuellement :

var url = require('url');
var url_parts = url.parse(request.url, true);
var query = url_parts.query;

29 votes

Attention ici : .parse(url, vrai ) url.parse(urlStr, [parseQueryString], [slashesDenoteHost])

0 votes

Quelle fonctionnalité supplémentaire/meilleure est fournie par hapi (le cas échéant) ?

195 votes

C'est accepté mais ce n'est pas la réponse préférée. Voir ci-dessous ! utiliser req.query

538voto

mikermcneil Points 3655

Dans Express, utilisez req.query .

req.params ne récupère que les paramètres de la route, pas ceux de la chaîne de requête. Voir le express o voiles documentation :

(req.params) Vérifie les paramètres de la route, ex : /user/:id

(req.query) Vérifie les paramètres de la chaîne de requête, ex : ?id=12 Vérifie les paramètres du corps urlencodé

(req.body), ex : id=12 Pour utiliser les corps de demande codés en url, req.body doit être un objet. Cela peut être fait en utilisant le middleware _express.bodyParser.

Cela dit, la plupart du temps, vous souhaitez obtenir la valeur d'un paramètre indépendamment de sa source. Dans ce cas, utilisez req.param('foo') .

La valeur du paramètre sera renvoyée, que la variable se trouve dans les paramètres de la route, dans la chaîne de requête ou dans le corps codé de la demande.

Remarque : si vous cherchez à obtenir l'intersection des trois types de paramètres de requête (similaire à la méthode PHP $_REQUEST ), il suffit de fusionner les paramètres ensemble - voici comment je fais le mettre en place dans Sails . Gardez à l'esprit que l'objet paramètres de chemin/route ( req.params ) a des propriétés de tableau, donc l'ordre a de l'importance (bien que ce peut changer en Express 4 )

0 votes

Req.param('STRING') est la bonne réponse. Voir ici : stackoverflow.com/questions/17007997/ (faire défiler la réponse en dessous de la réponse acceptée)

3 votes

@deltab voici un lien pour req.params dans les documents de Sails : sailsjs.org/#/documentation/reference/req/req.params.html et les nouvelles docs express : expressjs.com/4x/api.html#req.params

8 votes

Req.param est déprécié dans express 4.x, utilisez plutôt req.params, req.body ou req.query : expressjs.com/fr/4x/api.html#req.param

179voto

Cris-O Points 3334

Pour Express.js, vous devez faire req.params :

app.get('/user/:id', function(req, res) {
  res.send('user' + req.params.id);    
});

10 votes

Pour récupérer des variables GET dans express.js, vous pouvez utiliser req.query.

7 votes

@Andy req.params est meilleur car : req.param(name[, default]) va : Retourner la valeur du paramètre name s'il est présent ou par défaut. Vérifie les paramètres de la route (req.params), ex : /user/:id Vérifie les paramètres de la chaîne de requête (req.query), ex : ?id=12Vérifie les paramètres du corps urlencodé (req.body), ex : id=12 Pour utiliser les corps de requête urlencodés, req.body doit être un objet. Ceci peut être fait en utilisant le middleware _express.bodyParser.

1 votes

Je ne savais pas que req.param vérifiait req.query, merci pour cette note.

93voto

Grant Li Points 259

J'ai appris des autres réponses et j'ai décidé d'utiliser ce code sur l'ensemble de mon site :

var query = require('url').parse(req.url,true).query;

Ensuite, vous pouvez simplement appeler

var id = query.id;
var option = query.option;

où l'URL pour get devrait être

/path/filename?id=123&option=456

2 votes

L'id et l'option ne seront-ils pas indéfinis puisque la requête n'est qu'une chaîne de caractères ? nous devrions analyser les deux paramètres séparés avec une regex ou autre.

1 votes

@ossek Je crois que l'acte de causer parse sur req.url se convertit en un objet.

1 votes

@ossek, il a fourni true comme second argument à url.parse, ce qui fait que la propriété query pointe vers un objet ( et qui utilise en interne le module querystring) vous pouvez trouver plus d'informations à ce sujet dans les docs [ici] ( nodejs.org/docs/latest/api/ )

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X