route req query node node.js query-string express

node.js - node - req.query express



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

¿Podemos obtener las variables en la cadena de consulta en Node.js al igual que las recibimos en $_GET en PHP?

Sé que en Node.js podemos obtener la URL en la solicitud. ¿Hay un método para obtener los parámetros de cadena de consulta?


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

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

Entonces puedes simplemente llamar

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

donde la URL para obtener debe ser

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


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);


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") })


En express.js puede obtenerlo con bastante facilidad, todo lo que necesita hacer en su función de controlador es:

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

Y eso es todo, suponiendo que esté utilizando la sintaxis de es6.

PD. {id} significa Object destructuring , una nueva característica de es6.


En Express, use req.query .

req.params solo obtiene los parámetros de ruta, no los parámetros de cadena de consulta. Consulte la documentación del express o sails :

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

(req.query) Comprueba los parámetros de la cadena de consulta, por ejemplo:? id = 12 Comprueba los parámetros del cuerpo urlencoded

(req.body), ex: id = 12 Para utilizar cuerpos de solicitud codificados con url, req.body debe 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'') .

Se devolverá el valor del parámetro si la variable estaba en los parámetros de ruta, cadena de consulta o el cuerpo de la solicitud codificada.

$_REQUEST : si desea obtener la intersección de los tres tipos de parámetros de solicitud (similar a $_REQUEST ), solo necesita combinar los parámetros juntos. Así es como lo configuro en Sails . Tenga en cuenta que el objeto de parámetros de ruta / ruta ( req.params ) tiene propiedades de matriz, por lo que el orden es importante (aunque esto puede cambiar en Express 4 )


Es tan simple:

URL de ejemplo:

http://.com:3000/activate_accountid=3&activatekey=$2a$08$jvGevXUOvYxKsiBt.PpMs.zgzD4C/wwTsvjzfUrqLrgS3zXJVfVRK

Puede imprimir todos los valores de la cadena de consulta utilizando:

console.log("All query strings: " + JSON.stringify(req.query));

Salida

Todas las cadenas de consulta: {"id": "3", "enablekey": "$ 2a $ 08 $ jvGevXUOvYxKsiBt.PpMs.zgzD4C / wwTsvjz fUrqLrgS3zXJVfVRK"}

Para imprimir específicos:

console.log("activatekey: " + req.query.activatekey);

Salida

Palabra clave: $ 2a $ 08 $ jvGevXUOvYxKsiBt.PpMs.zgzD4C / wwTsvjzfUrqLrgS3zXJVfVRK


Estoy usando MEANJS 0.6.0 con [email protected], es bueno

Cliente:

Controlador:

var input = { keyword: vm.keyword }; ProductAPi.getOrder(input)

servicios:

this.getOrder = function (input) {return $http.get(''/api/order'', { params: input });};

Servidor

rutas

app.route(''/api/order'').get(products.order);

controlador

exports.order = function (req, res) { var keyword = req.query.keyword ...


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

Método 1: El enfoque de MVC donde se pasan los parámetros como / nombre de ruta /: nombre de parámetro
En este caso, puede usar req.params.paramname para obtener el valor del parámetro. Por ejemplo, consulte el código a continuación donde espero que la identificación sea un parámetro
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 usando ''?'' operador
Por ejemplo, consulte el código a continuación donde espero que la identificación sea un 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);


Para Express.js quieres hacer req.params :

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


Puedes usar

var express = require(''express''), router = express.Router(); router.get(''/'', function (req, res, next) { console.log(req.query); });


Puedes usar req.params con ExpressJS

router.get(''/recipe/:id'', function (req, res, next) { database.sendQuery("SELECT * FROM recipe WHERE id = " + req.params.id , function (err, results) { if (err) { console.log(err) } else { res.json(results) } }) });


Sí, puede acceder a req.url y al módulo url url.parse para url.parse manualmente:

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 simplemente puedes usar req.query para eso:

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


Se puede utilizar con expreso ^ 4.15.4:

request.query.<varible-name>;

Espero que esto ayude.


Si está utilizando ES6 y Express , pruebe este método de desestructuración :

const {id, since, fields, anotherField} = request.query;

En contexto:

const express = require(''express''); const app = express(); app.get(''/'', function(req, res){ const {id, since, fields, anotherField} = req.query; }); app.listen(3000);

También puedes usar los valores por defecto con la destructuring .

// sample request for testing const req = { query: { id: ''123'', fields: [''a'', ''b'', ''c''] } } const { id, since = new Date().toString(), fields = [''x''], anotherField = ''default'' } = req.query; console.log(id, since, fields, anotherField)


Un pequeño servidor HTTP Node.js que escucha en el puerto 9080, analiza los datos GET o POST y los envía al cliente como parte de la respuesta es:

var sys = require(''sys''), url = require(''url''), http = require(''http''), qs = require(''querystring''); var server = http.createServer( function (request, response) { if (request.method == ''POST'') { var body = ''''; request.on(''data'', function (data) { body += data; }); request.on(''end'',function() { var POST = qs.parse(body); //console.log(POST); response.writeHead( 200 ); response.write( JSON.stringify( POST ) ); response.end(); }); } else if(request.method == ''GET'') { var url_parts = url.parse(request.url,true); //console.log(url_parts.query); response.writeHead( 200 ); response.write( JSON.stringify( url_parts.query ) ); response.end(); } } ); server.listen(9080);

parse.js como parse.js y ejecútelo en la consola ingresando "node parse.js".


Whitequark respondió muy bien. Pero con las versiones actuales de Node.js y Express.js se requiere una línea más. Asegúrese de agregar el ''requiere http'' (segunda línea). He publicado un ejemplo más completo aquí que muestra cómo puede funcionar esta llamada. Una vez que se ejecute, escriba http://localhost:8080/?name=abel&fruit=apple en su navegador, y obtendrá una respuesta genial basada en el código.

var express = require(''express''); var http = require(''http''); var app = express(); app.configure(function(){ app.set(''port'', 8080); }); app.get(''/'', function(req, res){ res.writeHead(200, {''content-type'': ''text/plain''}); res.write(''name: '' + req.query.name + ''/n''); res.write(''fruit: '' + req.query.fruit + ''/n''); res.write(''query: '' + req.query + ''/n''); queryStuff = JSON.stringify(req.query); res.end(''That/'s all folks'' + ''/n'' + queryStuff); }); http.createServer(app).listen(app.get(''port''), function(){ console.log("Express server listening on port " + app.get(''port'')); })


puede utilizar el módulo url para recopilar parámetros utilizando url.parse

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

En expressjs se hace por,

var id = req.query.id;

P.ej:

var express = require(''express''); var app = express(); app.get(''/login'', function (req, res, next) { console.log(req.query); console.log(req.query.id); //Give parameter id });


ACTUALIZACIÓN 4 de mayo de 2014

La vieja respuesta se conserva aquí: https://gist.github.com/stefek99/b10ed037d2a4a323d638

1) Install express: 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) Ejecutar la aplicación: node app.js

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

He recibido el ID: algo

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


//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"} })


app.get(''/'', (req, res, next) => { const {id} = req.query; // rest of your code here... })

Puede usar esto o puede probar el analizador de cuerpo para analizar un elemento especial de los parámetros de solicitud.