Pouvons-nous obtenir les variables dans la chaîne de requête dans Node.js tout comme nous les obtenons $_GET
dans PHP?
Je sais que dans Node.js, nous pouvons obtenir l'URL dans la demande. Existe-t-il une méthode pour obtenir les paramètres de la chaîne de requête?
node.js
query-string
express
X Men
la source
la source
Réponses:
Dans Express, c'est déjà fait pour vous et vous pouvez simplement utiliser req.query pour cela:
Sinon, dans NodeJS, vous pouvez accéder à req.url et au
url
module intégré pour [url.parse] ( https://nodejs.org/api/url.html#url_url_parse_urlstring_parsequerystring_slashesdenotehost ) manuellement:la source
url.parse(urlStr, [parseQueryString], [slashesDenoteHost])
req.query
req.query
oureq.param
(ce qui est différent dereq.params
... voir ci-dessous.request
et n'a rien à voir avec Express. Voir la réponse de @ whitequark ci-dessous (utilisationrequest.query
)Puisque vous avez mentionné Express.js dans vos balises, voici une réponse spécifique à Express: utilisez req.query . Par exemple
la source
req.query.id
, pas besoin d'utiliser la notation entre crochets.Dans Express, utilisez
req.query
.req.params
obtient uniquement les paramètres de route, pas les paramètres de chaîne de requête. Voir la documentation express ou voiles :Cela dit, la plupart du temps, vous souhaitez obtenir la valeur d'un paramètre quelle que soit 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 route, la chaîne de requête ou le corps de demande codé.
Remarque - si vous visez à obtenir l'intersection des trois types de paramètres de demande (similaire à PHP
$_REQUEST
), il vous suffit de fusionner les paramètres - voici comment je l'ai configuré 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 est important (bien que cela puisse changer dans Express 4 )la source
req.params
dans les documents Sails: sailsjs.org/#/documentation/reference/req/req.params.html et les nouveaux documents express: expressjs.com/4x/api.html#req.paramsreq.param()
fonction d'assistance est susceptible d'être complètement supprimée dans Express 5. Cela ne sera imminent que plus tard en 2017, donc j'attendrai pour éditer cette réponse jusque-là. En attendant: il est sûr d'utiliserreq.param()
avec Express <= 3.x / Sails <= 0.12, et avec la dernière version disponible d'Express 4, bien qu'avec un message de journal de dépréciation. (Pour les utilisateurs de Sails: l'implémentation dereq.param()
deviendra un noyau à partir de Sails v1.0, et elle continuera à être entièrement prise en charge dans Sails à l'avenir.)Pour Express.js, vous voulez faire
req.params
:la source
J'ai appris des autres réponses et j'ai décidé d'utiliser ce code sur tout mon site:
Ensuite, vous pouvez simplement appeler
où l'URL de get doit être
la source
parse
sur lesreq.url
convertis à un objet.la source
Si vous utilisez ES6 et Express , essayez cette
destructuring
approche:Dans le contexte:
Vous pouvez également utiliser des valeurs par défaut avec
destructuring
:la source
Il y a 2 façons de passer des paramètres via la méthode GET
Méthode 1: L'approche MVC où vous passez les paramètres comme / routename /: paramname
Dans ce cas, vous pouvez utiliser req.params.paramname pour obtenir la valeur du paramètre. Par exemple, reportez-vous au code ci-dessous où je Je m'attends à ce que l'Id comme un
lien param soit comme: http://myhost.com/items/23
Méthode 2: approche générale: transmission de variables sous forme de chaîne de requête à l'aide de «?» opérateur
Pour exemple se référer ci - dessous le code où je me attends Id comme paramètre de requête
lien pourrait ressembler: http://myhost.com/items?id=23
la source
Vous devriez pouvoir faire quelque chose comme ceci:
la source
MISE À JOUR 4 mai 2014
Ancienne réponse conservée ici: https://gist.github.com/stefek99/b10ed037d2a4a323d638
1) Installez express:
npm install express
app.js
2) Exécutez l'application:
node app.js
3) Visitez dans le navigateur:
http://localhost:3000/endpoint?id=something
(beaucoup de choses ont changé depuis ma réponse et je crois qu'il vaut la peine de les mettre à jour)
la source
Un petit serveur HTTP Node.js écoute sur le port 9080, analyse les données GET ou POST et les renvoie au client dans le cadre de la réponse:
Enregistrez-le sous
parse.js
et exécutez-le sur la console en entrant "node parse.js".la source
Whitequark a bien répondu. Mais avec les versions actuelles de Node.js et Express.js, cela nécessite une ligne de plus. Assurez-vous d'ajouter le 'require http' (deuxième ligne). J'ai publié un exemple plus complet ici qui montre comment cet appel peut fonctionner. Une fois en cours d'exécution, tapez
http://localhost:8080/?name=abel&fruit=apple
votre navigateur et vous obtiendrez une réponse sympa basée sur le code.la source
C'est si simple:
Exemple d'URL:
Vous pouvez imprimer toutes les valeurs de la chaîne de requête en utilisant:
Production
Pour imprimer spécifique:
Production
la source
Vous pouvez utiliser
la source
Vous pouvez utiliser avec express ^ 4.15.4:
J'espère que cela t'aides.
la source
En
express.js
vous pouvez l' obtenir assez facile, tout ce que vous devez faire dans votre fonction de contrôleur est:Et c'est tout, en supposant que vous utilisez la syntaxe es6.
PD.
{id}
représenteObject destructuring
une nouvelle fonctionnalité es6.la source
Vous pouvez l'utiliser ou essayer l'analyseur de corps pour analyser un élément spécial à partir des paramètres de la demande.
la source
C'est en fait simple:
la source
vous pouvez utiliser le module url pour collecter des paramètres en utilisant url.parse
En expressjs c'est fait par,
Par exemple:
la source
Dans Express, nous pouvons simplement utiliser
req.query.<name>
. Cela fonctionne de la même manière qu'en$_GET['name']
PHP.la source
De mon point de vue, je pense que beaucoup de gens mélangent deux concepts différents. Pendant le développement REST, je connaissais la transmission d'informations dans l'URL de deux manières: "variables de chemin" et "paramètres de requête" (paramètres de requête). Le RFC décrit les parties de l'URI comme ceci: entrez la description du lien ici J'ai donc compris que l'auteur aimerait savoir comment passer les paramètres de demande. Je voudrais seulement rendre le sujet plus facile à comprendre, mais la solution a été mentionnée ici plusieurs fois.
Vous pouvez obtenir des paramètres de requête à partir de l'URI avec
request.query.<name of the parameter>
, la deuxième solution mentionnée étaitrequest.params.<name of the parameter>
et avec cela, vous pouvez obtenir les variables de chemin.la source
Donc, il y a deux façons de recevoir cet "id": 1) en utilisant des paramètres: les paramètres du code ressembleront à: Disons que nous avons un tableau,
Ensuite, pour les params, nous pouvons faire quelque chose comme:
2) Une autre méthode consiste à utiliser des paramètres de requête. ainsi l'url ressemblera à "..... \ api \ xyz? id = 1" où "? id = 1" est la partie de la requête. Dans ce cas, nous pouvons faire quelque chose comme:
la source
la source
Si vous avez besoin d'envoyer une
GET
demande à unIP
ainsi qu'àDomain
(d'autres réponses n'ont pas mentionné que vous pouvez spécifier uneport
variable), vous pouvez utiliser cette fonction:Ne manquez pas d'exiger des modules en haut de votre dossier:
Gardez également à l'esprit que vous pouvez utiliser le
https
module pour communiquer sur des domaines sécurisés et SSL. donc ces deux lignes changeraient:la source
pourquoi ne pas mélanger avec le code du serveur
par exemple . php
la source
J'utilise MEANJS 0.6.0 avec [email protected], c'est bon
Client:
Manette:
prestations de service:
Serveur
itinéraires
manette
la source
-------- Accès aux données de chaîne de requête -------
Supposons que ce soit le lien http://webapplog.com/search?term=node.js&page=1
Ainsi, en express, vous pouvez utiliser:
req.query.term
req.query.page
oureq.query
(il récupérera la requête dans un objet)// Exemple
app.get('http://webapplog.com/search?term=node.js&page=1',(req, res)=>{ res.json({term:req.query.term, page:req.query.page}) })
-------- Accès aux paramètres d'URL -------
Supposons que ce soit le lien http://webapplog.com/node.js/pages/100
Donc en express vous pouvez utiliser:
app.get('/:term/pages/:page',....)
req.params.term
req.params.page
// Exemple
app.get('http://webapplog.com/:term/pages/:page',(req, res)=>{ res.json({term:req.params.term, page:req.params.page}) })
la source