req.query e req.param em ExpressJS

93

Principais diferenças entre req.querye req.paramno Express

  • Como ambos são diferentes um do outro
  • Quando usar e em que casos

Suponha que um cliente envie, digamos, par Android (chave, valor) na solicitação ... qual usar?

[EDITAR]

Suponha que o Android envie uma solicitação POST -> A intenção é enviar (chave, valor) para o cliente e o servidor deve realizar uma consulta ao banco de dados com base no valor no servidor e retornar uma resposta JSON

Olhar :: esta questão para o programa i referenciados: : Programa Express simples para consultar resultado

William Jones
fonte
1
Você quer dizer req.querye req.param?
arb
1
sim ! ......... Eu modifiquei a pergunta também

Respostas:

119

req.query retornará um objeto JS depois que a string de consulta for analisada.

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

req.paramsretornará parâmetros na rota combinada. Se sua rota for / user /: id e você fizer uma solicitação para / user / 5 - req.paramsresultará{id: "5"}

req.paramé uma função que remove parâmetros da solicitação. Tudo isso pode ser encontrado aqui .

ATUALIZAR

Se o verbo for a POSTe você estiver usando bodyParser, você deve ser capaz de obter o corpo da forma com a qual funciona req.body. Essa será a versão JS analisada do POSTformulário ed.

arb
fonte
Obrigado, então suponha que um cliente envie, digamos, par Android (chave, valor) na solicitação ... qual deles usar no Express?
Não há como responder a essa pergunta sem ver a solicitação em questão.
arb
Por favor, olhe a pergunta atualizada ... eu também mencionei o link para o programa que estou usando expressamente em uma das perguntas que postei ... por favor, adicione um feedback!
@Iplay se esta resposta ajudou você, por favor, considere marcá-la como a resposta a esta pergunta. Obrigado.
arb
16

req.queryé a string de consulta enviada ao servidor, exemplo /page?test = 1 , req.paramsão os parâmetros passados ​​para o manipulador.

app.get('/user/:id', handler);, indo para /user/blah, req.param.idvoltaria blah;

OneOfOne
fonte
Obrigado, então suponha que um cliente envie, digamos, par Android (chave, valor) na solicitação ... qual deles usar?
1
Não tenho ideia do que você está falando, se for uma solicitação POST, será no req.data, se for GET t estarei noreq.param
OneOfOne
Olá, você poderia me dizer como comparar req.params com undefined?
Arj 1411
@AnandRaj estaria apenas vazio, então verifiquec.Param("id") == ""
OneOfOne
@OneOfOne, Obrigado pela sua resposta. Deixe-me verificar e atualizarei você
Arj 1411
14

Eu sugeriria usar a seguir

req.param('<param_name>')

req.param ("") funciona da seguinte forma

A pesquisa é realizada na seguinte ordem:

req.params
req.body
req.query

O acesso direto a req.body, req.params e req.query deve ser favorecido para maior clareza - a menos que você realmente aceite a entrada de cada objeto.

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

Abhijit Gaikwad
fonte
1
Olá, você poderia me dizer como comparar req.params com undefined?
Arj 1411
@AnandRaj o que você quer dizer com indefinido? quer dizer que os params não são conhecidos?
Abhijit Gaikwad
o que eu quis dizer é que quando verifiquei o tipo de req.params ele mostra indefinido. Meu objetivo é verificar se req.params. <Qualquer parâmetro URI> é nulo ou não
Arj 1411
@AnandRaj você pode postar seu código? O código a seguir funciona para mim var express = require ('express'); var app = express (); app.get ('/', função (req, res) {console.log (req.params); res.send (req.params);}); app.listen (3000);
Abhijit Gaikwad
@AnandRaj try if (reqParams.hasOwnProperty ('deviceType')) {}
Abhijit Gaikwad
11

Passando parâmetros

GET request to "/cars/honda" 

retorna uma lista de modelos de carros Honda

Passando consulta

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

retorna uma lista de modelos de carros Honda, mas filtrada de forma que apenas os modelos com uma cor azul de estoque sejam retornados.

Não faz sentido adicionar esses filtros aos parâmetros da URL (/ car / honda / color / blue) porque, de acordo com REST, isso implicaria que desejamos obter um monte de informações sobre a cor "azul". Como o que realmente queremos é uma lista filtrada de modelos Honda, usamos strings de consulta para filtrar os resultados que são retornados.

Observe que as strings de consulta são, na verdade, apenas pares de {chave: valor} em um formato ligeiramente diferente:? Chave1 = valor1 & chave2 = valor2 & chave3 = valor3.

Shivam Chhetri
fonte