Pregunta ¿Cómo obtener las variables GET (cadena de consulta) en Express.js en Node.js?


¿Podemos obtener las variables en la cadena de consulta en Node.js tal como las obtenemos en $_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?


845
2017-08-02 13:08


origen


Respuestas:


Sí, puedes acceder req.url y el builtin url módulo a url.parse de forma manual:

var url = require('url');
var url_parts = url.parse(request.url, true);
var query = url_parts.query;

Sin embargo, en expressjs ya está hecho para ti y puedes simplemente usar req.query para eso:

var id = req.query.id; // $_GET["id"]

754
2017-08-02 13:30



Como mencionó Express.js en sus etiquetas, aquí hay una respuesta específica de Express: use req.query. P.ej.

var express = require('express');
var app = express();

app.get('/', function(req, res){
  res.send('id: ' + req.query.id);
});

app.listen(3000);

1456
2017-08-02 14:00



En Express, use req.query.

req.params solo obtiene los parámetros de ruta, no los parámetros de cadena de consulta. Ver el exprimir o paño documentación:

(req.params) Comprueba los parámetros de la ruta, por ejemplo: / user /: id

(req.query) Comprueba los parámetros de cadena de consulta, ex:? id = 12 Comprueba los parametros de cuerpo urlencoded

(req.body), ex: id = 12 Para utilizar cuerpos de solicitud urlencoded, req.body debería ser un objeto. Esto se puede hacer utilizando el middleware _express.bodyParser.

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á ya sea que la variable esté en los parámetros de ruta, en la cadena de consulta o en 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's $_REQUEST), solo necesitas unir los parámetros, así es como configurarlo en Velas. Tenga en cuenta que el objeto de parámetros ruta / ruta (req.params) tiene propiedades de matriz, por lo que el orden es importante (aunque esto puede cambiar en Express 4)


407
2018-02-11 18:49



Para Express.js que desea hacer req.params:

app.get('/user/:id', function(req, res) {
  res.send('user' + req.params.id);    
});

110
2017-08-02 15:38



Aprendí de las otras respuestas y decidí usar este código en mi sitio:

var query = require('url').parse(req.url,true).query;

Entonces solo puedes llamar

var id = query.id;
var option = query.option;

donde la URL para obtener debería ser

/path/filename?id=123&option=456

66
2017-11-26 16:26



Deberías poder hacer algo como esto:

var http = require('http');
var url  = require('url');

http.createServer(function(req,res){
    var url_parts = url.parse(req.url, true);
    var query = url_parts.query;

    console.log(query); //{Object}

    res.end("End")
})

32
2017-08-02 13:44



//get query&params in express

//etc. example.com/user/000000?sex=female

app.get('/user/:id', function(req, res) {

  const query = req.query;// query = {sex:"female"}

  const params = req.params; //params = {id:"000000"}

})

29
2018-02-15 02:35



Hay 2 formas de pasar parámetros a través del método GET

Método 1 : El enfoque MVC donde se pasan 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 estoy esperando Id como param.
el enlace podría ser como: http://myhost.com/items/23

var express = require('express');
var app = express();
app.get("items/:id",function(req,res){
var id = req.params.id;
//further operations to perform
});
app.listen(3000);

Método 2: Enfoque general: pasar variables como cadena de consulta con '?' operador
Por ejemplo, consulte el siguiente código donde estoy esperando Id como parámetro de consulta
el enlace podría ser como: http://myhost.com/items?id=23

var express = require('express');
var app = express();
app.get("/items",function(req,res){
    var id = req.query.id;
    //further operations to perform
});
app.listen(3000);

26
2018-05-26 07:57



ACTUALIZACIÓN 4 de mayo de 2014 

Respuesta anterior conservada aquí: https://gist.github.com/stefek99/b10ed037d2a4a323d638


1) Instale expreso: npm install express

app.js

var express = require('express');
var app = express();

app.get('/endpoint', function(request, response) {
    var id = request.query.id;
    response.end("I have received the ID: " + id);
});

app.listen(3000);
console.log("node express app started at http://localhost:3000");

2) Ejecuta la aplicación: node app.js

3) Visita en el navegador: http://localhost:3000/endpoint?id=something

He recibido la ID: algo


(muchas cosas han cambiado desde mi respuesta y creo que vale la pena mantener las cosas al día)


22
2017-08-05 17:52