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.