Axios
Para hacer peticiones HTTP a APIs desde el navegador o Node.js con una API sencilla y consistente.
Cliente HTTP basado en promesas para el navegador y Node.js, con interceptores y soporte de TypeScript.
Notas y contexto
Qué es
Axios es un cliente HTTP basado en promesas para el navegador y Node.js, mantenido por el “axios collective” y publicado bajo licencia MIT. En el navegador usa XMLHttpRequest y en Node.js el módulo HTTP nativo, exponiendo la misma API en ambos entornos. Es uno de los clientes HTTP más populares del ecosistema JavaScript y trae sus propias definiciones de tipos para TypeScript.
Para qué sirve
- Hacer peticiones GET, POST, PUT, DELETE y demás métodos a APIs REST.
- Serializar y parsear JSON automáticamente sin escribir código repetitivo.
- Interceptar peticiones y respuestas para añadir cabeceras, tokens o lógica de error de forma centralizada.
- Cancelar peticiones, aplicar timeouts y seguir el progreso de subidas y descargas.
Cuándo usarlo
Encaja bien cuando necesitas una API uniforme entre navegador y Node.js, o características que el fetch nativo no ofrece de serie, como interceptores, transformación automática de JSON o timeouts integrados. Hoy la alternativa moderna es la API fetch nativa, disponible tanto en navegadores como en Node.js, que cubre la mayoría de casos sin dependencias; opta por Axios cuando esas comodidades adicionales te ahorren código de verdad.
Ejemplo
Instalación con npm:
npm install axios
Uso básico con async/await e interceptores:
import axios from 'axios';
const api = axios.create({
baseURL: 'https://api.ejemplo.com',
timeout: 5000,
});
api.interceptors.request.use((config) => {
config.headers.Authorization = 'Bearer token';
return config;
});
const { data } = await api.get('/usuarios/1');
console.log(data);
Puntos clave
- Misma API en navegador y Node.js, con tipos de TypeScript incluidos.
- Sistema de interceptores para modificar peticiones, respuestas y errores.
- Transformación automática de JSON y serialización de parámetros y formularios.
- Cancelación con AbortController, timeouts, protección CSRF y eventos de progreso.
Ten en cuenta
El proyecto está activo y mantenido. Aun así, añade una dependencia y peso al bundle frente al fetch nativo, que ya viene en navegadores modernos y en Node.js: para peticiones simples, fetch suele bastar. Reserva Axios para cuando aproveches sus interceptores, su configuración por instancia o el manejo de errores más detallado.