Chuck's Academy

Express JS

Middleware Avanzado en Express

Los middlewares son uno de los componentes más poderosos y flexibles de Express. Nos permiten interceptar las solicitudes y respuestas a lo largo del ciclo de vida de una aplicación, lo que nos da la capacidad de extender funcionalidades como autenticación, validación de datos, registro de actividades y mucho más. En este capítulo, profundizaremos en los middlewares avanzados y cómo crear middleware personalizado.

Tipos de Middleware en Express

Existen diferentes tipos de middleware en Express, cada uno con un propósito específico dentro del flujo de una aplicación. Los más comunes son:

  • Middleware de Aplicación: Se aplica a toda la aplicación y tiene acceso a cada solicitud que llega.
  • Middleware de Ruta: Se aplica solo a rutas específicas.
  • Middleware de Error: Se utiliza para capturar y manejar errores.

Middleware de Aplicación

Los middlewares de aplicación se aplican a todas las rutas de la aplicación. Son ideales para tareas globales como el registro de solicitudes, manejo de sesiones, o el uso de CORS.

javascript
"Este middleware de aplicación se ejecuta en cada solicitud que llega al servidor. Registra la hora de la solicitud en la consola usando console punto log y luego llama a next para que el flujo continúe."

Middleware de Ruta

Los middlewares de ruta se aplican solo a una ruta específica. Esto permite agregar funcionalidades adicionales a ciertas rutas sin afectar el resto de la aplicación.

javascript
"Este middleware llamado checkAdmin se aplica solo a la ruta slash admin. Verifica si la solicitud incluye un parámetro de consulta admin con valor true. Si es así, permite que la solicitud continúe, de lo contrario, responde con un código de estado cuatrocientos tres, Forbidden."

Middleware de Error

Los middlewares de error son especiales ya que se activan cuando ocurre un error en la aplicación. Tienen cuatro parámetros: err, req, res, y next.

javascript
"Este middleware captura cualquier error que ocurra en la aplicación. Imprime el error en la consola con console punto error y luego envía una respuesta con un código de estado quinientos indicando que algo salió mal."

Creación de Middleware Personalizado

Además de usar middlewares predefinidos o de terceros, podemos crear nuestro propio middleware personalizado para agregar funcionalidades específicas a nuestra aplicación.

Ejemplo de Middleware Personalizado para Validación de Datos

A continuación, veremos cómo crear un middleware personalizado que valide los datos de entrada de una solicitud POST.

javascript
"En este middleware llamado validateUserData, verificamos que los datos de la solicitud POST incluyan un nombre y un email. Si falta alguno de estos campos, devolvemos una respuesta con un código de estado cuatrocientos. Si los datos son correctos, llamamos a next para que la solicitud continúe."

Middleware de Terceros

Además de crear middlewares personalizados, Express permite usar middlewares de terceros que agregan funcionalidades específicas a la aplicación. Por ejemplo, body-parser es un middleware que nos permite procesar el cuerpo de las solicitudes, y cors se utiliza para manejar las políticas de seguridad entre dominios.

Instalación y Uso de cors

bash
"Instalamos el middleware cors usando npm install cors para habilitar el uso de políticas de seguridad entre dominios en nuestra aplicación Express."

Luego, lo configuramos como middleware global:

javascript
"Usamos el middleware cors en nuestra aplicación Express configurándolo como middleware global para que todas las rutas estén protegidas contra problemas de origen cruzado."

Middleware para Mejorar el Rendimiento

Otro uso avanzado de los middlewares es optimizar el rendimiento de la aplicación. Podemos, por ejemplo, implementar middleware para compresión de las respuestas HTTP o para almacenar en caché ciertos resultados.

Middleware de Compresión

El middleware compression permite comprimir las respuestas HTTP, lo que reduce el tamaño de los datos enviados al cliente y mejora los tiempos de carga.

Instalación de compression

bash
"Instalamos el middleware compression con npm install compression para reducir el tamaño de las respuestas HTTP y mejorar el rendimiento de la aplicación."

Uso de compression

javascript
"Usamos el middleware compression en nuestra aplicación configurándolo como middleware global para comprimir todas las respuestas HTTP de manera automática."

Middleware de Logging Avanzado

Además de mejorar el rendimiento, podemos usar middlewares para registrar información detallada sobre las solicitudes y respuestas, ayudando en el monitoreo de la aplicación. Hemos visto previamente cómo usar Morgan para logging básico, pero también podemos crear middlewares de logging más personalizados para necesidades específicas.

Middleware Personalizado para Logging

Aquí un ejemplo de cómo crear un middleware personalizado que registre el tiempo que toma procesar cada solicitud:

javascript
"Este middleware registra el tiempo que tarda en procesarse cada solicitud. Al inicio, registramos la hora con Date punto now, y cuando la respuesta termina, calculamos la duración restando el tiempo inicial del tiempo actual."

Buenas Prácticas con Middleware

  1. Orden de los Middlewares: El orden en el que los middlewares están definidos es importante, ya que se ejecutan en el mismo orden en que fueron declarados. Asegúrate de que los middlewares más generales estén al principio y los específicos al final.
  2. Reutilización de Middlewares: Aprovecha la modularidad de Express para reutilizar middlewares en diferentes partes de la aplicación o entre proyectos.
  3. Evita Procesos Largos en los Middlewares: Los middlewares deben ser eficientes y no bloquear el ciclo de vida de la solicitud. Si necesitas realizar operaciones pesadas, considera hacerlas asíncronas o usarlas en una capa separada.

Conclusión

En este capítulo, hemos explorado los conceptos avanzados de middleware en Express, incluyendo la creación de middlewares personalizados, el uso de middlewares de terceros y cómo optimizar el rendimiento de la aplicación usando middlewares. El uso adecuado de middlewares puede mejorar significativamente la eficiencia y seguridad de una aplicación Express.


Pregúntame lo que sea