El objeto req (Request) en Express representa el llamado HTTP y tiene diferentes propiedades del llamado, como la cadena de texto query (Query params), los parámetros de la URL (URL params), el cuerpo (Body), los encabezados (HTTP headers), etc.
Para acceder al req basta con acceder al primer parámetro de nuestros router handlers (router middleware) ó middlewares.
Contiene los pares de llave-valor de los datos enviados el cuerpo (body) del llamado (request). Por defecto es undefined pero es establecido cuando se usa algún "body-parser" middleware como body-parser y multer.
En Postman cuando hacemos un request y enviamos datos en la pestaña Body, estos middlewares son los que nos ayudan a entender el tipo de datos que vamos a recibir en el req.body.
Aquí podemos ver como se pueden usar estos middlwares para establecer el valor del req.body:
const app =require('express')();const bodyParser =require('body-parser');const multer =require('multer');const upload =multer();// Para datos tipo multipart/form-dataapp.use(bodyParser.json());// Para datos tipo application/jsonapp.use(bodyParser.urlencoded({extended:true}));// Para datos tipo application/x-www-form-urlencodedapp.post('/profile', upload.array(),function(req, res, next){console.log(req.body); res.json(req.body);});
Esta propiedad contiene un objeto con las propiedades equivalentes los parámetros nombrados en la ruta. Por ejemplo si tenemos una ruta de la forma /user/:name entonces la propiedad name esta disponible como req.params.name y alli podremos ver su valor, supongamos que llamáramos la ruta con /user/glrodasz, entonces el valor de req.params.name seria glrodasz. Este objeto por defecto tiene el valor de un objeto vacío {}.
// GET /user/glrodaszreq.params.name// => "glrodasz"
req.query
Esta propiedad contiene un objeto con las propiedades equivalentes a las cadenas de texto query de la ruta. Si no hay ninguna cadena de texto query tendrá como valor por defecto un objeto vacío {}.
Tengo un error, en req. query, lo toma con undefine, hago console log, y efectivamente me arroja undefine, pero si hago console log de req solamente, me imprime todo el req, con los valores de query, esto es para el API, para el router en views, si funciona, aunguna idea de a que se deba?
Yo tengo la misma duda
Pon el código para ver cual puede ser el error
Excelente para entender el objeto Request.
♥
Excelente lectura, me aclaro varias dudas del req.body