Software Consulting Services

Cómo usar los interceptores en Node.js

November 20, 2023

Tags: Tecnologías

node.js

 

En Node.js, el término "interceptores" no es una característica estándar incorporada en el propio Node.js, pero a menudo se asocia con la capacidad de interceptar y manejar solicitudes o respuestas, especialmente en el contexto de realizar solicitudes HTTP. La funcionalidad de interceptores suele ser implementada por bibliotecas específicas, como Axios, que es comúnmente utilizada para realizar solicitudes HTTP en aplicaciones Node.js.

 

Los interceptores en Node.js permiten ejecutar código o realizar acciones específicas antes de que se envíe una solicitud o después de que se recibe una respuesta. En el caso de Axios, puedes definir interceptores para solicitudes y respuestas.

 

En Express.js, la manipulación de solicitudes y respuestas se realiza principalmente mediante middleware. Aunque el término "interceptores" no se usa directamente, la funcionalidad es similar. Se puede usar middleware para interceptar solicitudes antes de que lleguen a los manejadores de rutas y para interceptar respuestas antes de que se envíen al cliente.

 

 

node.js

 

Interceptores de Node.js

 

[Axios Interceptors]
[Middleware en NodeJS]
[Event Emitters]
[Eventos]
[promesas]
[promesas - hacks]

 

Uso de interceptores

 

El concepto de interceptores se utiliza a menudo en bibliotecas específicas o en patrones de diseño para realizar tareas como la manipulación de datos, el manejo de errores, la autorización, etc. Podemos incluir interceptores en manejadores de eventos, promesas, middlewares o en peticiones HTTP.

 

Interceptores en manejadores de eventos

 

Los manejadores de eventos pueden considerarse como funciones que se ejecutan en respuesta a la emisión de ciertos eventos. Estos manejadores pueden considerarse como "interceptores" en el sentido de que interceptan y responden a eventos específicos. En node pueden implementarse de la siguiente manera:

 

node.js

 

  1. Se crea una instancia de EventEmitter llamada myEmitter.
  2. Se define un manejador de eventos para el evento llamado 'mensaje'. Este manejador de eventos actúa como un "interceptor" para el evento 'mensaje'.
  3. Cuando se emite el evento 'mensaje' con myEmitter.emit('mensaje', 'Hola, mundo!'), el manejador de eventos asociado a 'mensaje' se ejecutará, imprimiendo 'Evento "mensaje" interceptado: Hola, mundo!' en la consola.

 

Los manejadores de eventos en Node.js pueden considerarse como interceptores de eventos específicos. Cuando se emite un evento, los manejadores asociados a ese evento se ejecutan, permitiéndote realizar acciones específicas en respuesta a ese evento. Este patrón es comúnmente utilizado en Node.js y otras plataformas basadas en JavaScript para implementar una comunicación asíncrona y basada en eventos.

 

Interceptores en promesas

 

En el contexto de las promesas en JavaScript, no existe un concepto directo de "interceptores". Sin embargo, se puede obtener un comportamiento similar al utilizar métodos como .then() y .catch() para manejar y transformar el resultado de una promesa. Estos métodos actúan como funciones de retorno de llamada (callbacks) que se ejecutan cuando la promesa se resuelve o se rechaza.

 

node.js

 

El método .then(), actúa como un "interceptor" para manejar la resolución exitosa de la promesa. Se pueden realizar acciones adicionales con el resultado de la promesa y devolver un nuevo valor si es necesario.

 

El método .catch(), actúa como un "interceptor" para manejar cualquier error que ocurra durante la ejecución de la promesa. Puedes realizar acciones específicas de manejo de errores dentro de este bloque.

 

Estos métodos(then y catch) permiten encadenar acciones y manejar resultados o errores de manera más estructurada en comparación con los callbacks anidados tradicionales. Si bien no se llaman específicamente "interceptores", cumplen un papel similar al permitir interceptar y manejar eventos específicos en el ciclo de vida de una promesa.

 

Interceptores en middlewares

 

En el contexto de Express.js, los middleware actúan de manera similar a interceptores, permitiéndote realizar tareas específicas antes o después de que una solicitud llegue a un manejador de ruta. Los middleware son funciones que tienen acceso a los objetos de solicitud (req), respuesta (res), y a la función next que pasa la ejecución al siguiente middleware en la pila.

 

node.js

 

El primer middleware se ejecuta antes de cada solicitud y muestra información sobre la solicitud en la consola. Luego, la solicitud pasa al manejador de ruta correspondiente (app.get('/') en este caso). Después de que la respuesta se envía al cliente, el segundo middleware se ejecuta y muestra información sobre la respuesta en la consola.

 

Estos middlewares actúan como interceptores en el sentido de que permiten realizar acciones específicas antes o después de la ejecución de los manejadores de ruta. Puedes tener múltiples middlewares, y su orden de declaración es importante, ya que determina el orden en el que se ejecutan. Además, se pueden utilizar middleware para tareas específicas, como autenticación, manejo de errores, análisis de datos etc.

 

Interceptores en peticiones HTTP

 

En el contexto de Node.js y las peticiones HTTP, el término "interceptores" a menudo se asocia con bibliotecas como Axios, que permiten interceptar y modificar solicitudes y respuestas HTTP. Esto es especialmente útil para agregar funcionalidades personalizadas, como la manipulación de encabezados, la gestión de errores, la autenticación, entre otras cosas.

 

node.js

 

axios.interceptors.request.use agrega un interceptor para todas las solicitudes HTTP salientes. Puedes modificar la configuración de la solicitud antes de que se envíe.

 

axios.interceptors.response.use agrega un interceptor para todas las respuestas HTTP entrantes. Puedes modificar los datos de la respuesta antes de que se entreguen al código que realizó la solicitud.

 

Estos interceptores te brindan un control completo sobre las solicitudes y respuestas HTTP y son útiles para aplicar lógica común a través de la aplicación, como la manipulación de tokens de autenticación, el manejo de errores, el registro, etc.

 

node.js

 

Implementación de interceptores de Node.js en JavaScript

 

En JavaScript Interceptores generalmente se refiere a patrones o mecanismos que permiten realizar acciones específicas en respuesta a eventos, promesas, solicitudes HTTP u otros puntos de ejecución del código. La implementación y la utilidad de interceptores pueden variar según el contexto y las bibliotecas utilizadas.

 

  • Interceptores en Manejadores de Eventos: Los manejadores de eventos permiten "interceptar" eventos y ejecutar funciones (interceptores) en respuesta a esos eventos. Esto es comúnmente utilizado en el DOM y en Node.js con el módulo de eventos.
  • Interceptores en Promesas: Aunque el término "interceptores" no se utiliza directamente, los métodos .then() y .catch() en las promesas permiten "interceptar" la resolución exitosa o el rechazo de la promesa y realizar acciones específicas en consecuencia.
  • Interceptores en Middleware (Express.js): En Express.js, los middleware actúan como "interceptores" que pueden ejecutarse antes o después de que se maneje una solicitud. Se utilizan para realizar tareas como el registro, la manipulación de datos o la autenticación.
  • Interceptores en Peticiones HTTP (Axios): En bibliotecas como Axios, se pueden definir interceptores para solicitudes y respuestas HTTP. Estos interceptores permiten modificar la configuración de la solicitud, realizar acciones antes de enviarla y manipular la respuesta recibida.

 

Node.js es una de las tecnologías más usadas en la actualidad para desarrollo web y en Rootstack tenemos un equipo de expertos con conocimiento actualizado. 

 

Te recomendamos en video