Volver arriba

Rutas y Middlewares en Express.js:

En Express.js, las rutas son responsables de definir cómo responde la aplicación a solicitudes HTTP específicas.

Los middlewares, por otro lado, son funciones que tienen acceso tanto a la solicitud como a la respuesta y pueden ejecutar acciones antes de que se envíe la respuesta final.

Ejemplo de Rutas:

Considera una aplicación de tareas simple. Aquí tienes ejemplos de rutas básicas usando Express.js:


const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;

// Ruta para obtener todas las tareas
app.get('/tasks', (req, res) => {
  // Lógica para obtener y enviar todas las tareas
  res.send('Listando todas las tareas');
});

// Ruta para obtener una tarea específica
app.get('/tasks/:taskId', (req, res) => {
  const taskId = req.params.taskId;
  // Lógica para obtener y enviar la tarea con taskId
  res.send(`Detalles de la tarea ${taskId}`);
});

// Ruta para crear una nueva tarea
app.post('/tasks', (req, res) => {
  // Lógica para crear una nueva tarea
  res.send('Creando una nueva tarea');
});

// Ruta para actualizar una tarea existente
app.put('/tasks/:taskId', (req, res) => {
  const taskId = req.params.taskId;
  // Lógica para actualizar la tarea con taskId
  res.send(`Actualizando la tarea ${taskId}`);
});

// Ruta para eliminar una tarea
app.delete('/tasks/:taskId', (req, res) => {
  const taskId = req.params.taskId;
  // Lógica para eliminar la tarea con taskId
  res.send(`Eliminando la tarea ${taskId}`);
});

app.listen(PORT, () => {
  console.log(`Servidor ejecutándose en el puerto ${PORT}`);
});

En este ejemplo, creamos rutas para listar todas las tareas, obtener detalles de una tarea específica, crear una nueva tarea, actualizar una tarea existente y eliminar una tarea.

Ejemplo de Middlewares:

Los middlewares son funciones que tienen acceso al objeto de solicitud (req), al objeto de respuesta (res) y a la siguiente función de middleware en el ciclo de solicitud-respuesta de Express. Pueden utilizarse para realizar tareas como autenticación, validación de datos, manejo de errores, entre otros.


// Middleware para autenticación simple
const authenticate = (req, res, next) => {
  const authToken = req.headers.authorization;

  if (!authToken) {
    return res.status(401).send('Token de autenticación no proporcionado');
  }

  // Lógica de autenticación aquí (verificación de token, por ejemplo)

  next(); // Llama al siguiente middleware en la pila
};

// Middleware para registro de solicitudes
const logRequest = (req, res, next) => {
  console.log(`[${new Date().toLocaleString()}] ${req.method} ${req.url}`);
  next();
};

// Uso de middlewares en rutas específicas
app.use(logRequest); // Aplica el middleware de registro a todas las rutas
app.get('/tasks', authenticate, (req, res) => {
  // Lógica para obtener y enviar todas las tareas
  res.send('Listando todas las tareas');
});

app.listen(PORT, () => {
  console.log(`Servidor ejecutándose en el puerto ${PORT}`);
});

En este ejemplo, creamos dos middlewares. El primero, authenticate, verifica la presencia de un token de autenticación. El segundo, logRequest, registra información sobre cada solicitud en la consola. Ambos se utilizan en rutas específicas.

Estos son conceptos fundamentales para crear aplicaciones robustas y flexibles con Express.js.

Otras utilidades de los Middlewares

  1. Encadenamiento de Middlewares:

app.get('/ruta', middleware1, middleware2, (req, res) => {
  // Lógica de la ruta
});

  1. Middlewares Globales:

    
    app.use(middlewareGlobal);