Request object
Clase 15 de 43 • Curso de Express.js 2018
Contenido del curso
Template Engines y archivos estáticos
Creando un API Restful
Conectando Express.js con servicios externos
Middlewares: En el medio del request
- 20

Qué es un middleware y qué tipos existen
01:47 min - 21

Manejo de errores usando un middleware
09:36 min - 22

Validación de datos usando un middleware
03:06 min - 23

Implementando Sentry para el manejo de log de errores
01:14 min - 24

Qué es Joi y Boom y cómo configurar Joi
08:06 min - 25

Configurando Boom y nuestra página 404
14:47 min - 26

Middlewares populares
02:34 min
Autenticación en Express.js
Testing
Deployment
- 35

Buenas prácticas para el despliegue en producción
03:36 min - 36

npm script
05:01 min - 37

Añadiendo manejo de cache y seguridad con helmet
09:47 min - 38

Cómo usar las variables de entorno para diferente ambientes
01:06 min - 39

Habilitando CORS en producción
01:09 min - 40

Cómo funciona y por qué es importante el uso de HTTPS
01:08 min - 41

Desplegando con Now y detectando vulnerabilidades con npm audit
07:16 min - 42

Automatizar el chequeo de vulnerabilidades con snyk
00:52 min - 43

Conclusiones
01:46 min
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.
Como por ejemplo así lo hemos visto siempre:
app.get('/user/:id', function(req, res) { res.send('user ' + req.params.id); });
Pero también funcionaría sin problemas:
app.get('/user/:id', function(request, response) { response.send('user ' + request.params.id); });
Exploremos las propiedades más importantes
req.body
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-data app.use(bodyParser.json()); // Para datos tipo application/json app.use(bodyParser.urlencoded({ extended: true })); // Para datos tipo application/x-www-form-urlencoded app.post('/profile', upload.array(), function (req, res, next) { console.log(req.body); res.json(req.body); });
Más información sobre los diferentes formatos que puede tener el body: https://developer.mozilla.org/es/docs/Web/HTTP/Methods/POST
req.params
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/glrodasz req.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 {}.
req.query.q // => "tobi ferret" // GET /shoes?order=desc&shoe[color]=blue&shoe[type]=converse req.query.order // => "desc" req.query.shoe.color // => "blue" req.query.shoe.type // => "converse"
Más información sobre los query strings en: https://es.wikipedia.org/wiki/Query_string y https://tools.ietf.org/html/rfc3986#section-3.4