Podemos obter as variáveis na string de consulta no Node.js da mesma forma que as $_GET
no PHP?
Eu sei que no Node.js podemos obter o URL na solicitação. Existe um método para obter os parâmetros da string de consulta?
node.js
query-string
express
XMen
fonte
fonte
Respostas:
No Express, isso já foi feito para você e você pode simplesmente usar o req.query para isso:
Caso contrário, no NodeJS, você pode acessar o req.url e o
url
módulo interno para [url.parse] ( https://nodejs.org/api/url.html#url_url_parse_urlstring_parsequerystring_slashesdenotehost ) manualmente:fonte
url.parse(urlStr, [parseQueryString], [slashesDenoteHost])
req.query
req.query
orreq.param
(o que é diferente dereq.params
... veja abaixo.request
e não tem nada a ver com o Express. Veja a resposta de @ whitequark abaixo (userequest.query
)Como você mencionou o Express.js em suas tags, eis uma resposta específica do Express: use req.query . Por exemplo
fonte
req.query.id
, não há necessidade de usar a notação de colchete.No Express, use
req.query
.req.params
obtém apenas os parâmetros da rota, não os parâmetros da string de consulta. Consulte a documentação expressa ou de velas :Dito isto, na maioria das vezes, você deseja obter o valor de um parâmetro, independentemente de sua origem. Nesse caso, use
req.param('foo')
.O valor do parâmetro será retornado, independentemente da variável estar nos parâmetros de rota, na sequência de consultas ou no corpo da solicitação codificada.
Nota lateral - se você deseja obter a interseção de todos os três tipos de parâmetros de solicitação (semelhantes aos do PHP
$_REQUEST
), basta mesclar os parâmetros - eis como eu o configurei no Sails . Lembre-se de que o objeto de parâmetros de caminho / rota (req.params
) possui propriedades de matriz, portanto, a ordem é importante (embora isso possa mudar no Express 4 )fonte
req.params
nos documentos do Sails: sailsjs.org/#/documentation/reference/req/req.params.html e os novos documentos expressos: expressjs.com/4x/api.html#req.paramsreq.param()
função auxiliar provavelmente será completamente removida no Express 5. Isso não será iminente até algum tempo depois em 2017, então vou esperar para editar esta resposta até então. Enquanto isso: é seguro usarreq.param()
com o Express <= 3.x / Sails <= 0.12 e com a versão mais recente disponível do Express 4, embora com uma mensagem de log de descontinuação. (Para usuários de velas: A implementaçãoreq.param()
vai passar para núcleo como das Velas v1.0, e vai continuar a ser totalmente suportado no Sails no futuro.)Para o Express.js, você quer fazer
req.params
:fonte
Aprendi com as outras respostas e decidi usar esse código em todo o site:
Então você pode simplesmente ligar
onde o URL para get deve estar
fonte
parse
onreq.url
convertidos para um objeto.fonte
Se você estiver usando o ES6 e o Express , tente esta
destructuring
abordagem:No contexto:
Você também pode usar valores padrão com
destructuring
:fonte
Existem 2 maneiras de passar parâmetros através do método GET
Método 1: A abordagem MVC onde você passa os parâmetros como / routename /: paramname
Nesse caso, você pode usar req.params.paramname para obter o valor do parâmetro Por exemplo, consulte o código abaixo, onde I estou esperando o Id como um
link param poderia ser como: http://myhost.com/items/23
Método 2: Abordagem geral: Passando variáveis como string de consulta usando '?' operator
Por exemplo, consulte o código abaixo, no qual estou esperando o ID como um
link de parâmetro de consulta : http://myhost.com/items?id=23
fonte
Você deve conseguir fazer algo assim:
fonte
ATUALIZAÇÃO 4 de maio de 2014
Resposta antiga preservada aqui: https://gist.github.com/stefek99/b10ed037d2a4a323d638
1) Instale expresso:
npm install express
app.js
2) Execute o aplicativo:
node app.js
3) Visita no navegador:
http://localhost:3000/endpoint?id=something
(muitas coisas mudaram desde a minha resposta e acredito que vale a pena manter as coisas atualizadas)
fonte
Um pequeno servidor HTTP Node.js que atende na porta 9080, analisando dados GET ou POST e enviando-os de volta ao cliente como parte da resposta é:
Salve-o como
parse.js
e execute-o no console digitando "node parse.js".fonte
Whitequark respondeu bem. Mas com as versões atuais do Node.js e Express.js, é necessária mais uma linha. Certifique-se de adicionar o 'exigir http' (segunda linha). Publiquei um exemplo mais completo aqui que mostra como essa chamada pode funcionar. Depois de executar, digite
http://localhost:8080/?name=abel&fruit=apple
seu navegador e você receberá uma resposta interessante com base no código.fonte
É tão simples:
URL de exemplo:
Você pode imprimir todos os valores da string de consulta usando:
Resultado
Para imprimir específico:
Resultado
fonte
Você pode usar
fonte
Você pode usar com express ^ 4.15.4:
Espero que isto ajude.
fonte
Para
express.js
você ficar bem fácil, tudo que você precisa fazer na sua função de controlador é:E isso é tudo, supondo que você esteja usando a sintaxe es6.
PD.
{id}
significaObject destructuring
um novo recurso do es6.fonte
Você pode usar isso ou tentar o analisador de corpo para analisar o elemento especial a partir dos parâmetros de solicitação.
fonte
É realmente simples:
fonte
você pode usar o módulo url para coletar parâmetros usando url.parse
No expressjs, é feito por,
Por exemplo:
fonte
No Express, podemos simplesmente usar
req.query.<name>
. É o mesmo que$_GET['name']
no PHP.fonte
Do meu ponto de vista, acho que muitas pessoas misturam dois conceitos diferentes. Durante o desenvolvimento do REST, eu estava familiarizado com a transmissão de informações na URL com duas maneiras "variáveis de caminho" e "parâmetros de solicitação" (parâmetros de consulta). O RFC descreve as partes do URI assim: insira a descrição do link aqui Então eu entendi que o autor gostaria de saber como passar parâmetros de solicitação. Gostaria apenas de tornar o tópico mais fácil de entender, mas a solução foi mencionada aqui várias vezes.
Você pode obter parâmetros de consulta do URI com
request.query.<name of the parameter>
a segunda solução mencionadarequest.params.<name of the parameter>
e com isso você pode obter as variáveis de caminho.fonte
Portanto, existem duas maneiras pelas quais esse "id" pode ser recebido: 1) usando params: os params de código terão a seguinte aparência: digamos que temos uma matriz,
Então, para os parâmetros, podemos fazer algo como:
2) Outro método é usar parâmetros de consulta. portanto, o URL será algo como "..... \ api \ xyz? id = 1" onde "? id = 1" é a parte da consulta. Nesse caso, podemos fazer algo como:
fonte
fonte
Se você precisar enviar uma
GET
solicitação a umaIP
e também aDomain
(Outras respostas não mencionaram que você pode especificar umaport
variável), você poderá fazer uso desta função:Não perca a exigência de módulos na parte superior do seu arquivo:
Lembre-se também de que você pode usar o
https
módulo para se comunicar sobre domínios seguros e SSL. então essas duas linhas mudariam:fonte
por que não misturado com o código do servidor
por exemplo . php
fonte
Estou usando o MEANJS 0.6.0 com [email protected], é bom
Cliente:
Controlador:
Serviços:
Servidor
rotas
controlador
fonte
-------- Acessando dados da string de consulta -------
Suponha que este seja o link http://webapplog.com/search?term=node.js&page=1
Então, no expresso, você pode usar:
req.query.term
req.query.page
oureq.query
(ele buscará a consulta em um objeto)// Exemplo
app.get('http://webapplog.com/search?term=node.js&page=1',(req, res)=>{ res.json({term:req.query.term, page:req.query.page}) })
-------- Acessando parâmetros de URL -------
Suponha que este seja o link http://webapplog.com/node.js/pages/100
Portanto, no express, você pode usar:
app.get('/:term/pages/:page',....)
req.params.term
req.params.page
// Exemplo
app.get('http://webapplog.com/:term/pages/:page',(req, res)=>{ res.json({term:req.params.term, page:req.params.page}) })
fonte