Configuración de reintentos HTTP en Axios con retry-axios

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.

  1. Instala el paquete utilizando tu gestor de dependencias preferido: ``` npm install retry-axios

    
    o
    
    

    yarn add retry-axios

  2. 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';

  3. 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.

  1. 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 };

  2. 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.

  1. Genera una nueva instancia de Axios: ``` const privateClient = httpClient.create();

  2. Asigna las preferencias de reintentos a las opciones por defecto de esta instancia: ``` privateClient.defaults.raxConfig = customRetrySettings;

  3. Vincula el interceptor exclusivamente a este cliente: ``` const registeredInterceptor = requestInterceptor.attach(privateClient);

  4. Realiza las peticiones utilizando tu nuevo cliente aislado: ``` const serverResponse = await privateClient.get('https://api.ejemplo.com/data');

Etiquetas: retry-axios axios JavaScript Manejo de errores interceptor HTTP

Publicado el 6-26 19:36