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


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.


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;


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


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.