Introducción a la biblioteca de reintentos para Axios
retry-axios actúa como un interceptor altamente adaptabel para Axios, diseñado para facilitar la reejecución de solicitudes HTTP fallidas. Esta herramienta es esencial para gestionar errores de red mediante reintentos automáticos, implementando estrategias como el retroceso exponencial. Permite a los desarrolladores definir la cantidad de intentos, los intervalos de espera, los verbos HTTP susceptibles a reintentos y los códigos de estado que activarán esta lógica. La biblioteca está construida íntegramente con JavaScript.
Integración de la bilbioteca en tu entorno de desarrollo
Para comenzar a utilizar este interceptor, el proceso de instalación es directo. Es fundamental contar con Axios previamente configurado en tu proyecto.
-
Instala el paquete utilizando tu gestor de dependencias preferido: ``` npm install retry-axios
oyarn add retry-axios
-
Importa los módulos necesarios en tu archivo fuente: ``` const requestInterceptor = require('retry-axios'); const httpClient = require('axios');
Si trabajas con módulos ES o TypeScript, la importación se realiza así:import * as requestInterceptor from 'retry-axios'; import httpClient from 'axios';
-
Finalmente, acopla el interceptor al cliente HTTP global: ``` const interceptorId = requestInterceptor.attach();
Personalización de la lógica de reintentos
El comportamiento predeterminado puede ajustarse inyectando un objeto de configuración durante la inicialización del interceptor.
-
Define tus parámetros de reintentos personalizados: ``` const customRetrySettings = { retry: 5, // Número máximo de intentos noResponseRetries: 3, // Reintentos si no hay respuesta del servidor retryDelay: 150, // Retraso inicial en milisegundos httpMethodsToRetry: ['GET', 'PUT', 'DELETE', 'HEAD', 'OPTIONS'], // Métodos a reintentar statusCodesToRetry: [[100, 199], [429, 429], [500, 599]], // Códigos de error que disparan reintentos backoffType: 'exponential' // Estrategia de espera: exponencial, estática o lineal };
-
Pasa la configuración al método de acoplamiento: ``` const activeInterceptorId = requestInterceptor.attach(customRetrySettings);
Aislamiento de configuración en instancias de Axios
Cuando necesitas aplicar la lógica de reintnetos únicamente a un cliente específico en lugar de modificar la instancia global, puedes instanciar un cliente de Axios dedicado.
-
Genera una nueva instancia de Axios: ``` const privateClient = httpClient.create();
-
Asigna las preferencias de reintentos a las opciones por defecto de esta instancia: ``` privateClient.defaults.raxConfig = customRetrySettings;
-
Vincula el interceptor exclusivamente a este cliente: ``` const registeredInterceptor = requestInterceptor.attach(privateClient);
-
Realiza las peticiones utilizando tu nuevo cliente aislado: ``` const serverResponse = await privateClient.get('https://api.ejemplo.com/data');