req.query y req.param en ExpressJS


89

Principales diferencias entre req.queryy req.paramen Express

  • ¿En qué se diferencian ambos entre sí?
  • Cuando usar entonces en que casos

Supongamos que un cliente envía un par de Android (clave, valor) en la solicitud ... ¿cuál usar?

[EDITAR]

Supongamos que Android envía una solicitud POST -> La intención es enviar (clave, valor) al cliente y el servidor debe realizar una consulta de base de datos basada en el valor en el servidor y devolver la respuesta JSON

:: mirada a esta pregunta para el programa de referencia i: : Sencillo programa Express para hacer consultas a un resultado


1
¿Quieres decir req.queryy req.param?
arb

1
si ! ......... También he modificado la pregunta

Respuestas:


115

req.query devolverá un objeto JS después de analizar la cadena de consulta.

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

req.paramsdevolverá parámetros en la ruta coincidente. Si su ruta es / user /: id y realiza una solicitud a / user / 5 - req.paramsproduciría{id: "5"}

req.parames una función que elimina los parámetros de la solicitud. Todo esto se puede encontrar aquí .

ACTUALIZAR

Si el verbo es a POSTy estás usando bodyParser, entonces deberías poder obtener el cuerpo de la forma en tu función con req.body. Esa será la versión JS analizada del POSTformulario ed.


Gracias, entonces suponga que un cliente envía un par de Android (clave, valor) en la solicitud ... ¿cuál usar en Express?

No hay forma de responder a esta pregunta sin ver la solicitud en cuestión.
ARB

Por favor, mire la pregunta actualizada ... También mencioné el enlace al programa que estoy usando en Express en una de las preguntas que publiqué ... ¡Por favor agregue un comentario!

@Iplay, si esta respuesta le ayudó, considere marcarla como la respuesta a esta pregunta. Gracias.
ARB

15

req.queryes la cadena de consulta enviada al servidor, ejemplo /page?test = 1 , req.paramson los parámetros pasados ​​al controlador.

app.get('/user/:id', handler);, yendo a /user/blah, req.param.idvolvería blah;


Gracias, entonces supongamos que un cliente envía un par de Android (clave, valor) en la solicitud ... ¿cuál usar?

1
No tengo idea de lo que está hablando, si es una solicitud POST, estará en el req.data, si es GET, estará enreq.param
OneOfOne

Hola, ¿podría decirme cómo verificar req.params contra undefined?
Arj 1411

@AnandRaj estaría simplemente vacío, así que verifiquec.Param("id") == ""
OneOfOne

@OneOfOne, Gracias por tu respuesta. Déjame comprobarlo y te actualizaré
Arj 1411

14

Sugeriría usar lo siguiente

req.param('<param_name>')

req.param ("") funciona de la siguiente manera

La búsqueda se realiza en el siguiente orden:

req.params
req.body
req.query

Se debe favorecer el acceso directo a req.body, req.params y req.query para mayor claridad, a menos que realmente acepte la entrada de cada objeto.

Ref: http://expressjs.com/4x/api.html#req.param


1
Hola, ¿podría decirme cómo verificar req.params contra undefined?
Arj 1411

@AnandRaj ¿a qué te refieres con indefinido? ¿Quieres decir que los parámetros no se conocen?
Abhijit Gaikwad

lo que quise decir es cuando verifiqué el tipo de req.params que muestra indefinido. Mi objetivo es verificar si req.params. <Cualquier parámetro de URI> es nulo o no
Arj 1411

@AnandRaj, ¿puedes publicar tu código? El siguiente código funciona para mí 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

Pasando params

GET request to "/cars/honda" 

devuelve una lista de modelos de automóviles Honda

Pasando consulta

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

devuelve una lista de modelos de automóviles Honda, pero filtrada para que solo se devuelvan los modelos con un color de stock de azul.

No tiene sentido agregar esos filtros en los parámetros de la URL (/ car / honda / color / blue) porque según REST, eso implicaría que queremos obtener un montón de información sobre el color "blue". Dado que lo que realmente queremos es una lista filtrada de modelos Honda, utilizamos cadenas de consulta para filtrar los resultados que se devuelven.

Observe que las cadenas de consulta son en realidad solo pares {clave: valor} en un formato ligeramente diferente:? Clave1 = valor1 & clave2 = valor2 & clave3 = valor3.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.