Middlewares
Los middlewares son funciones que se ejecutan entre la petición del cliente (request) y la respuesta del servidor (response). Sirven para procesar, modificar o validar la información antes de que llegue al controlador o a la respuesta final.
¿Para qué sirve?
- Encapsular lógica repetitiva.
- Filtrar y validar datos de entrada.
- Manejar autenticación, logging y errores.
¿Por qué conocer esto mejora tus habilidades como desarrollador?
Porque entender middlewares te permite estructurar mejor el flujo de tu aplicación, reutilizar código y mantenerla más ordenada, especialmente en APIs y aplicaciones escalables.
Características de los Middlewares
Tiene acceso a:
- req → datos de la solicitud
- res → datos de la respuesta
- next() → función para pasar al siguiente middleware o controlador.
Puede:
- Modificar req o res.
- Terminar la respuesta.
- Llamar a next() para seguir el flujo.
Se ejecutan en orden, tal como se definen en el código.
Ejemplo de Middleware
// /middlewares/logger.js
const logger = (req, res, next) => {
console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
next(); // Pasa al siguiente middleware o ruta
};
export default logger;
Implementación global (para todas las rutas):
// /app.js
import express from 'express';
import logger from './middlewares/logger.js';
const app = express();
app.use(logger); // Aplica el middleware a todas las rutas
app.get('/', (req, res) => {
res.send('¡Hola, mundo!');
});
app.listen(3000, () => {
console.log('Servidor corriendo en http://localhost:3000');
});
Implementación específica (para una ruta):
// /routes/tareas.js
import express from 'express';
import logger from '../middlewares/logger.js';
const router = express.Router();
router.get('/tareas', logger, (req, res) => {
res.send('Lista de tareas');
});
//...
Tipos Comunes de Middlewares
- Autenticación: Verifica si el usuario está autenticado.
- Validación: Comprueba que los datos de entrada cumplen con ciertos criterios.
- Logging: Registra información sobre las solicitudes.
- Manejo de Errores: Captura y maneja errores de manera centralizada.