¿Podemos obtener las variables en la cadena de consulta en Node.js tal como las tenemos $_GET
en PHP?
Sé que en Node.js podemos obtener la URL en la solicitud. ¿Hay algún método para obtener los parámetros de la cadena de consulta?
node.js
query-string
express
X Men
fuente
fuente
Respuestas:
En Express ya está hecho para usted y simplemente puede usar req.query para eso:
De lo contrario, en NodeJS, puede acceder a req.url y al
url
módulo integrado para [url.parse] ( https://nodejs.org/api/url.html#url_url_parse_urlstring_parsequerystring_slashesdenotehost ) manualmente:fuente
url.parse(urlStr, [parseQueryString], [slashesDenoteHost])
req.query
req.query
oreq.param
(que es diferente dereq.params
... ver más abajo.request
y no tiene nada que ver con Express. Vea la respuesta de @ whitequark a continuación (usorequest.query
)Como ha mencionado Express.js en sus etiquetas, aquí hay una respuesta específica de Express: use req.query . P.ej
fuente
req.query.id
, no es necesario usar la notación de corchetes.En Express, use
req.query
.req.params
solo obtiene los parámetros de ruta, no los parámetros de cadena de consulta. Consulte la documentación de express o Sails :Dicho esto, la mayoría de las veces, desea obtener el valor de un parámetro independientemente de su origen. En ese caso, use
req.param('foo')
.El valor del parámetro se devolverá si la variable estaba en los parámetros de ruta, cadena de consulta o el cuerpo de solicitud codificado.
Nota al margen: si desea obtener la intersección de los tres tipos de parámetros de solicitud (similar a PHP
$_REQUEST
), solo necesita fusionar los parámetros juntos: así es como lo configuré en Sails . Tenga en cuenta que el objeto de parámetros de ruta / ruta (req.params
) tiene propiedades de matriz, por lo que el orden es importante (aunque esto puede cambiar en Express 4 )fuente
req.params
los documentos de Sails: sailsjs.org/#/documentation/reference/req/req.params.html y los nuevos documentos express: expressjs.com/4x/api.html#req.paramsreq.param()
es probable que la función auxiliar se elimine por completo en Express 5. Esto no será inminente hasta algún tiempo más tarde en 2017, así que esperaré para editar Esta respuesta hasta entonces. Mientras tanto: es seguro de usarreq.param()
con Express <= 3.x / Sails <= 0.12, y con la última versión disponible de Express 4, aunque con un mensaje de registro de obsolescencia. (Para los usuarios de velas: La implementación dereq.param()
se moverá en el núcleo como de las Velas v1.0, y va a seguir apoyando plenamente en Velas en el futuro.)Para Express.js que quieres hacer
req.params
:fuente
Aprendí de las otras respuestas y decidí usar este código en todo mi sitio:
Entonces puedes llamar
donde debe estar la URL para obtener
fuente
parse
enreq.url
los convertidos a un objeto.fuente
Si está utilizando ES6 y Express , pruebe este
destructuring
enfoque:En contexto:
También puede usar valores predeterminados con
destructuring
:fuente
Hay 2 formas de pasar parámetros a través del método GET
Método 1: El enfoque MVC donde pasa los parámetros como / routename /: paramname
En este caso puede usar req.params.paramname para obtener el valor del parámetro. Por ejemplo, consulte el siguiente código donde I Espero que Id como un
enlace param pueda ser como: http://myhost.com/items/23
Método 2: Enfoque general: pasar variables como cadena de consulta usando '?' operador
Por ejemplo, consulte el código a continuación donde espero Id como un
enlace de parámetro de consulta podría ser: http://myhost.com/items?id=23
fuente
Deberías poder hacer algo como esto:
fuente
ACTUALIZACIÓN 4 de mayo de 2014
Antigua respuesta conservada aquí: https://gist.github.com/stefek99/b10ed037d2a4a323d638
1) Instalar express:
npm install express
app.js
2) Ejecute la aplicación:
node app.js
3) Visita en el navegador:
http://localhost:3000/endpoint?id=something
(Muchas cosas han cambiado desde mi respuesta y creo que vale la pena mantenerlas actualizadas)
fuente
Un pequeño servidor HTTP Node.js que escucha en el puerto 9080, analiza los datos GET o POST y los envía de vuelta al cliente como parte de la respuesta es:
parse.js
Guárdelo como y ejecútelo en la consola ingresando "node parse.js".fuente
Whitequark respondió amablemente. Pero con las versiones actuales de Node.js y Express.js requiere una línea más. Asegúrese de agregar el 'requerir http' (segunda línea). He publicado un ejemplo más completo aquí que muestra cómo puede funcionar esta llamada. Una vez que se ejecute, escriba
http://localhost:8080/?name=abel&fruit=apple
su navegador y obtendrá una buena respuesta basada en el código.fuente
Es tan simple:
URL de ejemplo:
Puede imprimir todos los valores de la cadena de consulta utilizando:
Salida
Para imprimir en específico:
Salida
fuente
Puedes usar
fuente
Puede usar con express ^ 4.15.4:
Espero que esto ayude.
fuente
En
express.js
puedes hacerlo bastante fácil, todo lo que necesitas hacer en la función de tu controlador es:Y eso es todo, suponiendo que esté utilizando la sintaxis es6.
PD.
{id}
significaObject destructuring
, una nueva característica es6.fuente
Puede usar esto o puede probar body-parser para analizar elementos especiales de los parámetros de solicitud.
fuente
En realidad es simple:
fuente
puede usar el módulo url para recopilar parámetros usando url.parse
En expressjs se hace por,
P.ej:
fuente
En Express, simplemente podemos usar
req.query.<name>
. Funciona igual que$_GET['name']
en PHP.fuente
Desde mi punto de vista, creo que muchas personas mezclan dos conceptos diferentes. Durante el desarrollo de REST estaba familiarizado con pasar información en la URL con dos formas de "variables de ruta" y "parámetros de solicitud" (parámetros de consulta). El RFC describe las partes de URI de esta manera: ingrese la descripción del enlace aquí Así que entendí que el autor desea saber cómo pasar los parámetros de solicitud. Solo quisiera hacer que el tema sea más fácil de entender, pero la solución se mencionó aquí muchas veces.
Puede obtener parámetros de consulta del URI con
request.query.<name of the parameter>
, la segunda solución mencionada fuerequest.params.<name of the parameter>
y con esto puede obtener las variables de ruta.fuente
Por lo tanto, hay dos formas en que se puede recibir esta "identificación": 1) usando parámetros: los parámetros de código se verán así: Digamos que tenemos una matriz,
Luego, para los parámetros, podemos hacer algo como:
2) Otro método es usar parámetros de consulta. entonces la url se verá como "..... \ api \ xyz? id = 1" donde "? id = 1" es la parte de la consulta. En este caso podemos hacer algo como:
fuente
fuente
Si alguna vez necesita enviar una
GET
solicitud a unIP
así como aDomain
(Otras respuestas no mencionaron que puede especificar unaport
variable), puede hacer uso de esta función:No se pierda requerir módulos en la parte superior de su archivo:
También tenga en cuenta que puede usar el
https
módulo para comunicarse a través de dominios seguros y SSL. entonces estas dos líneas cambiarían:fuente
¿Por qué no mezclar con el código del servidor?
p.ej . php
fuente
Estoy usando MEANJS 0.6.0 con [email protected], es bueno
Cliente:
Controlador:
servicios:
Servidor
rutas
controlador
fuente
-------- Acceso a los datos de la cadena de consulta -------
Supongamos que este es el enlace http://webapplog.com/search?term=node.js&page=1
Entonces, en express puedes usar:
req.query.term
req.query.page
oreq.query
(buscará la consulta en un objeto)// Ejemplo
app.get('http://webapplog.com/search?term=node.js&page=1',(req, res)=>{ res.json({term:req.query.term, page:req.query.page}) })
-------- Acceso a los parámetros de URL -------
Supongamos que este es el enlace http://webapplog.com/node.js/pages/100
Por lo tanto, en express puede usar:
app.get('/:term/pages/:page',....)
req.params.term
req.params.page
// Ejemplo
app.get('http://webapplog.com/:term/pages/:page',(req, res)=>{ res.json({term:req.params.term, page:req.params.page}) })
fuente