Implementando middleware en Node.js [Guía práctica]

Autor: | Última modificación: 18 de marzo de 2024 | Tiempo de Lectura: 3 minutos
Temas en este post: ,

Algunos de nuestros reconocimientos:

Premios KeepCoding

Middleware en Node.js juega un papel crucial en el manejo de solicitudes y respuestas y es una pieza fundamental para construir aplicaciones web robustas, escalables y mantenibles. ¿Alguna vez te has preguntado cómo funciona realmente esa magia detrás de tu aplicación Node.js? ¿Qué hace que todo fluya sin problemas? Una de las respuestas a estas preguntas es middleware, ya que esas funciones intermedias o middleware functions son las verdaderas trabajadoras detrás de escena que hacen que tu aplicación Node.js sea lo que es. Y hoy, en KeepCoding, te voy a guiar paso a paso sobre cómo implementar tu propio middleware en NodeJS.

¿Qué es un middleware?

Para empezar, hablemos de qué es exactamente un middleware. Puedes imaginarlo como un portero. Cada vez que alguien (o en nuestro caso, una solicitud) quiere entrar, el portero (middleware function) verifica su entrada y decide si puede pasar o no. Middleware en Node.js es una función que tiene acceso a los objetos de la solicitud (request), la respuesta (response) y la siguiente función middleware en el ciclo de solicitudes-respuestas de la aplicación.

En términos más técnicos, un middleware en Node.js es una función con acceso a tres objetos: req (la solicitud del usuario), res (la respuesta que se enviará al usuario) y next (la siguiente función middleware, que se llamará en el stack).

Diferentes niveles de middleware

Hay dos tipos principales de middleware en Node.js: application level y router level. Ambos funcionan de manera muy similar, pero se utilizan en diferentes contextos.

Middleware a nivel de aplicación (Application Level Middleware)

Este es el tipo más común de middleware y se ejecuta antes de llegar a las funciones de ruta que has definido en tu aplicación.

Aquí te dejamos un ejemplo simple de cómo se ve:

const express = require('express');
const app = express();

app.use((req, res, next) => {
  console.log('This is an application level middleware!');
  next();
});

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000);

En este código, nuestro middleware a nivel de aplicación simplemente imprime un mensaje en la consola cada vez que se recibe una solicitud.

Middleware a nivel de enrutador (Router Level Middleware)

El middleware a nivel de enrutador, como su nombre indica, se aplica a un objeto de enrutador en lugar de a la aplicación en general. Este tipo de middleware es útil cuando quieres aplicar una lógica específica a ciertas rutas, y no a todas las rutas de tu aplicación.

Un ejemplo de cómo se ve esto es:

const express = require('express');
const router = express.Router();

router.use((req, res, next) => {
  console.log('This is a router level middleware!');
  next();
});

router.get('/', (req, res) => {
  res.send('Hello from the router!');
});

const app = express();
app.use('/router', router);

app.listen(3000);

En este ejemplo, nuestro middleware a nivel de enrutador imprime un mensaje en la consola cada vez que se recibe una solicitud para una ruta que comienza con /router.

El manejo de errores en middleware en Node.js

El manejo de errores es una parte crucial de cualquier aplicación y Node.js no es la excepción. En Node.js, podemos definir un middleware para manejar errores que se produzcan en nuestra aplicación. Aquí puedes ver un ejemplo de cómo hacerlo:

const express = require('express');
const app = express();

app.use((req, res, next) => {
  console.log('This is a middleware function!');
  throw new Error('Something went wrong!');
});

app.use((error, req, res, next) => {
  console.log('This is an error handling middleware!');
  res.status(500).send('Something went wrong!');
});

app.listen(3000);

En este código, tenemos dos middlewares. El primer middleware genera un error y el segundo se encarga de manejar ese error.

Y eso es todo, ya has implementado middleware en Node.js. Como puedes ver, los middleware son una herramienta poderosa para gestionar el flujo de solicitudes y respuestas en tu aplicación Node.js. La versatilidad de middleware en Node.js es tal que puede utilizarse para manejar una multitud de tareas, como el manejo de errores, la transformación de datos, la incorporación de seguridad y mucho más.

¿Te gustaría convertirte en un profesional?

Si te ha gustado este recorrido por el maravilloso mundo del middleware en Node.js, te animamos a seguir profundizando. Para ello, puedes apuntarte a nuestro Desarrollo Web Full Stack Bootcamp. Te ayudaremos a dominar el middleware y otras técnicas avanzadas de Node.js, además de muchos otros conceptos y herramientas de vanguardia que te prepararán para una carrera en el sector de la tecnología. No pierdas la oportunidad de cambiar tu vida y ¡apúntate hoy mismo!

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado