Proyecto mínimo y didáctico para configurar interceptores de Axios (request/response) y unificar el manejo de errores de forma tipada y legible para el usuario.
- Entender dónde y cómo inicializar interceptores de Axios.
- Enriquecer requests con headers comunes.
- Interceptar respuestas y unificar el manejo de errores.
- Mapear
AxiosError.codea mensajes claros usando TypeScript.
- React + TypeScript + Vite
- Axios
- Sonner (toasts) para notificaciones
src/interceptors/axios.interceptors.ts: Interceptor global de Axios (request/response + notificaciones de error).src/utils/getValidationsError.utils.ts: TraduceAxiosError.codea mensajes legibles.src/models/typeWithKey.ts: TipoTypeWithKeypara mapeo tipado de códigos de error de Axios.src/services/testing.service.ts: Servicio de ejemplo que dispara una petición para observar el interceptor.
- Inserta encabezados comunes:
AuthorizationyContent-Type. - Omite la inyección de headers para rutas de assets (por ejemplo, archivos estáticos bajo
/assets). - Usa
AbortControllerde forma intencional para cancelar inmediatamente la petición (propósito didáctico), provocandoERR_CANCELEDen Axios.
Nota: La cancelación es intencional para observar el pipeline de errores. Si quieres que la petición continúe normalmente, comenta las líneas marcadas en
src/interceptors/axios.interceptors.ts:
axios.interceptors.request.use((request) => {
// const controller = new AbortController();
// request.signal = controller.signal;
// controller.abort("Cancelado desde el interceptor");
return request;
});- Registra en consola las respuestas exitosas.
- En errores de Axios, obtiene un mensaje claro con
getValidationsErrorUtils(error.code)y lo muestra con Sonner (toast).
TypeWithKey(src/models/typeWithKey.ts):- Define un mapa con claves restringidas a los códigos de error oficiales de Axios (
ERR_BAD_OPTION_VALUE,ERR_CANCELED,ERR_NETWORK, etc.). - Garantiza en tiempo de compilación que cada código contemplado tenga un mensaje asociado.
- Define un mapa con claves restringidas a los códigos de error oficiales de Axios (
getValidationsErrorUtils(src/utils/getValidationsError.utils.ts):- Recibe
AxiosError.codey devuelve un mensaje en español pensado para UX. - Si no existe
codeo no está reconocido, devuelve un mensaje genérico útil para soporte/depuración.
- Recibe
- La app inicializa el interceptor al arrancar.
- Cualquier petición es cancelada inmediatamente para disparar un error controlado.
- El interceptor de respuesta detecta error de Axios → mapea
codea texto → muestra notificación.
testing.service.tsrealiza una petición a la API de Rick and Morty para observar el comportamiento del interceptor.- Permite verificar que:
- Se inyectan headers.
- Se ejecuta (o no) la cancelación, según lo configurado.
- Se muestra el mensaje correcto mapeado por
getValidationsErrorUtils.
npm install
npm run devAbre la app y observa en consola/toasts el comportamiento del interceptor. Si deseas que la petición se complete, recuerda comentar la cancelación con AbortController como se indicó arriba.