Volver a la lista

¿Qué es el middleware?

Comprenda qué es el middleware de Express y visualice el proceso por el cual las solicitudes atraviesan el servidor como una secuencia de pasos (pipeline).

Intermedio
|
8min
|
Verificado (2026-07)
middlewareExpresspipeline de solicitudesfunción nextregistro
Progreso0/55 (0%)

¿Qué es el middleware?

Al finalizar este tema

Podrás explicar qué es el middleware, comprender la secuencia (el flujo de procesamiento) mediante la cual Express procesa las solicitudes y crear y aplicar tu propio middleware.


"Procesamiento intermedio" entre la solicitud y la respuesta

Cuando llega una solicitud al servidor web, no se envía inmediatamente una respuesta. Entre ambos ocurren varias etapas.

text
Solicitud (Request) → [Registro] → [Verificación de autenticación] → [Análisis del cuerpo] → Controlador de ruta → Respuesta (Response)

Cada una de estas etapas intermedias es un middleware. Se puede definir como "una función que realiza alguna acción entre la recepción de una solicitud y el envío de una respuesta".


Estructura del middleware en Express

En Express, el middleware es una función que recibe 3 parámetros.

javascript
function myMiddleware(req, res, next) {
  // req: objeto de solicitud (información enviada por el cliente)
  // res: objeto de respuesta (información que enviará el servidor)
  // next: función para pasar al siguiente middleware

  console.log(`${req.method} ${req.url}`);
  next(); // Si no se llama a esto, la solicitud se detiene aquí.
}

app.use(myMiddleware);

next() es esencial. Debe llamarse para que la solicitud continúe hacia el siguiente middleware (o controlador de ruta). Si se omite next(), el cliente esperará indefinidamente.


Middleware en la práctica: registro, autenticación y manejo de errores

Registro de solicitudes

javascript
app.use((req, res, next) => {
  const now = new Date().toISOString();
  console.log(`[${now}] ${req.method} ${req.url}`);
  next();
});
// [2026-07-03T10:30:00.000Z] GET /users

Verificación de la autenticación

javascript
function authGuard(req, res, next) {
  const token = req.headers.authorization;
  if (!token) {
    return res.status(401).json({ error: 'Se requiere inicio de sesión' });
  }
  next(); // Si hay token, continuar al siguiente
}

// Aplicar solo a rutas específicas
app.get('/my-profile', authGuard, (req, res) => {
  res.json({ name: 'Kim Hoon' });
});

app.use() se puede aplicar a todas las solicitudes o, de forma opcional, como segundo argumento de una ruta específica.

Middleware para el manejo de errores

javascript
// Cuatro parámetros — Express lo reconoce como controlador de errores
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).json({ error: 'Error interno del servidor' });
});

El middleware de manejo de errores tiene 4 parámetros (err adicional). Express distingue los controladores de errores por esta firma. Si se llama a next(err) en cualquier parte del código, la ejecución llegará aquí.


El orden de ejecución define la secuencia

Los middleware se ejecutan en el orden en que se registraron con app.use(). Cambiar el orden modifica el comportamiento.

javascript
// 1. Análisis del cuerpo (¡primero!)
app.use(express.json());

// 2. Registro
app.use((req, res, next) => {
  console.log(`${req.method} ${req.url}`, req.body);
  next();
});

// 3. Rutas
app.post('/users', (req, res) => {
  res.json(req.body);
});

// 4. Manejo de errores (siempre al final)
app.use((err, req, res, next) => {
  res.status(500).json({ error: err.message });
});

express.json() debe colocarse antes del registro para que req.body contenga los datos analizados. Si se invierte el orden, req.body será igual a undefined. En el middleware, la posición del código determina el orden de ejecución.


Resumen clave

El middleware no es un concepto complejo. Es una (req, res, next) conectada en secuencia. El registro, la autenticación, el análisis y el manejo de errores son todas las "tareas intermedias" repetitivas en los servidores web. Este concepto se aplica no solo a Express, sino también a la mayoría de los frameworks web (Django, Rails, Spring), por lo que, una vez comprendido, puede implementarse en cualquier entorno.


💬 Preguntas y comentarios

0 comentarios

Puedes publicar sin iniciar sesión. Los comentarios de invitados no pueden editarse ni eliminarse después.

0/2000

Cargando...