¡Hola! Si eres desarrollador, probablemente hayas tenido esos momentos en los que necesitas hacer múltiples llamadas a la API en tus proyectos. No es la parte más glamurosa de la codificación, pero es esencial. Hoy, vamos a sumergirnos en las múltiples peticiones con Axios, una forma poderosa de manejar esta tarea de manera eficiente.
Pero espera, antes de que empecemos, aquí tienes un consejo rápido: si estás buscando una herramienta de API poderosa para optimizar tu proceso de desarrollo, echa un vistazo a Apidog. Es gratis y está repleto de funciones que te harán la vida mucho más fácil.
Ahora, ¡remanguémonos y entremos en los detalles de cómo hacer múltiples peticiones con Axios!
¿Qué es Axios?
Lo primero es lo primero, hablemos de qué es Axios. Axios es un cliente HTTP popular basado en promesas para JavaScript. Se utiliza para hacer peticiones HTTP desde el navegador y Node.js, y es particularmente apreciado por su facilidad de uso y flexibilidad. Con Axios, puedes enviar fácilmente peticiones HTTP asíncronas a endpoints REST y realizar operaciones CRUD.

¿Por qué usar Axios para múltiples peticiones?
Al construir aplicaciones web modernas, a menudo hay escenarios en los que necesitas obtener datos de múltiples fuentes. Esto podría ser para poblar un panel de control con diferentes conjuntos de datos, realizar una serie de operaciones dependientes, o incluso simplemente recopilar toda la información necesaria para mostrar una sola página.
Manejar múltiples peticiones a la API puede ser complicado. Necesitas gestionar múltiples operaciones asíncronas, manejar los errores con elegancia y asegurarte de que tu aplicación no se atasque. Aquí es donde Axios brilla. Proporciona una forma elegante y sencilla de gestionar múltiples peticiones con características como:
- API basada en promesas: Facilita el manejo de peticiones asíncronas.
- Soporte integrado para peticiones concurrentes: Usando
axios.all
yaxios.spread
. - Interceptores: Para manejar las transformaciones de peticiones y respuestas.
- Manejo de errores: Simplifica la gestión de diferentes tipos de errores.
Empezando con Axios
Antes de sumergirnos en las múltiples peticiones, asegurémonos de que estamos en la misma página con los conceptos básicos de Axios.
Instalando Axios
Primero, necesitas instalar Axios. Si estás usando npm, puedes hacerlo con:
npm install axios
O, si prefieres yarn:
yarn add axios
Petición básica con Axios
Aquí tienes un ejemplo rápido de una petición GET básica usando Axios:
import axios from 'axios';
axios.get('https://api.example.com/data')
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('Error fetching data:', error);
});
Este simple fragmento obtiene datos de la URL dada y los registra en la consola. Si hay un error, registra el mensaje de error.
Haciendo múltiples peticiones con Axios
Ahora, pasemos al tema principal: hacer múltiples peticiones con Axios. Hay varias formas de manejar esto, dependiendo de tus necesidades.
Usando axios.all
y axios.spread
El método más común para manejar múltiples peticiones es usando axios.all
y axios.spread
. Estas funciones te ayudan a gestionar peticiones concurrentes y a manejar sus respuestas de una manera limpia y organizada.
Aquí tienes un ejemplo:
import axios from 'axios';
function getData() {
const requestOne = axios.get('https://api.example.com/data1');
const requestTwo = axios.get('https://api.example.com/data2');
axios.all([requestOne, requestTwo])
.then(axios.spread((responseOne, responseTwo) => {
console.log('Data from first request:', responseOne.data);
console.log('Data from second request:', responseTwo.data);
}))
.catch(errors => {
console.error('Error fetching data:', errors);
});
}
getData();
En este ejemplo, axios.all
toma un array de promesas (nuestras peticiones HTTP) y espera a que todas se resuelvan. La función axios.spread
luego toma las respuestas y las distribuye en argumentos individuales, lo que facilita el trabajo con cada respuesta.
Manejando peticiones dinámicas
A veces, no sabes de antemano cuántas peticiones necesitarás hacer. En tales casos, puedes crear dinámicamente el array de promesas.
import axios from 'axios';
function fetchData(endpoints) {
const requests = endpoints.map(endpoint => axios.get(endpoint));
axios.all(requests)
.then(axios.spread((...responses) => {
responses.forEach((response, index) => {
console.log(`Data from request ${index + 1}:`, response.data);
});
}))
.catch(errors => {
console.error('Error fetching data:', errors);
});
}
const apiEndpoints = [
'https://api.example.com/data1',
'https://api.example.com/data2',
'https://api.example.com/data3'
];
fetchData(apiEndpoints);
En este escenario, mapeamos sobre el array de endpoints para crear un array de promesas. Esta es una forma poderosa de manejar listas dinámicas de llamadas a la API.
Peticiones secuenciales con Axios
Hay veces en las que necesitas asegurarte de que una petición se complete antes de comenzar la siguiente. Por ejemplo, cuando la segunda petición depende del resultado de la primera. En tales casos, puedes encadenar tus peticiones usando promesas.
import axios from 'axios';
function fetchSequentialData() {
axios.get('https://api.example.com/data1')
.then(response1 => {
console.log('First request data:', response1.data);
return axios.get('https://api.example.com/data2');
})
.then(response2 => {
console.log('Second request data:', response2.data);
})
.catch(error => {
console.error('Error fetching data:', error);
});
}
fetchSequentialData();
Este enfoque asegura que la segunda petición solo comience después de que la primera se haya completado con éxito.
Manejo de errores en múltiples peticiones
Manejar los errores de manera efectiva es crucial cuando se trata de múltiples peticiones. Axios proporciona varias formas de gestionar los errores, asegurando que tu aplicación pueda manejar los problemas con elegancia.
Capturando errores para peticiones individuales
Puedes manejar los errores para cada petición individualmente añadiendo un bloque .catch
a cada promesa:
import axios from 'axios';
const requestOne = axios.get('https://api.example.com/data1')
.catch(error => console.error('Error in request one:', error));
const requestTwo = axios.get('https://api.example.com/data2')
.catch(error => console.error('Error in request two:', error));
axios.all([requestOne, requestTwo])
.then(axios.spread((responseOne, responseTwo) => {
if (responseOne) console.log('Data from first request:', responseOne.data);
if (responseTwo) console.log('Data from second request:', responseTwo.data);
}));
Capturando todos los errores juntos
Alternativamente, puedes capturar todos los errores juntos al final:
import axios from 'axios';
const requestOne = axios.get('https://api.example.com/data1');
const requestTwo = axios.get('https://api.example.com/data2');
axios.all([requestOne, requestTwo])
.then(axios.spread((responseOne, responseTwo) => {
console.log('Data from first request:', responseOne.data);
console.log('Data from second request:', responseTwo.data);
}))
.catch(error => {
console.error('Error fetching data:', error);
});
Este enfoque es más simple pero menos granular, ya que no distingue qué petición falló.
Optimizando las peticiones con Axios
Para sacar el máximo provecho de Axios, aquí tienes algunos consejos y mejores prácticas.
Usando interceptores
Los interceptores te permiten ejecutar tu código o modificar peticiones/respuestas antes de que sean manejadas por then
o catch
. Son geniales para añadir encabezados, registrar, manejar errores, etc.
import axios from 'axios';
// Add a request interceptor
axios.interceptors.request.use(request => {
console.log('Starting Request', request);
return request;
}, error => {
return Promise.reject(error);
});
// Add a response interceptor
axios.interceptors.response.use(response => {
console.log('Response:', response);
return response;
}, error => {
return Promise.reject(error);
});
Estableciendo valores predeterminados globales
Puedes establecer opciones de configuración predeterminadas para Axios. Esto puede ser útil para establecer URLs base, encabezados, tiempos de espera, etc.
import axios from 'axios';
axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = 'Bearer token';
axios.defaults.timeout = 10000;
Cancelando peticiones
A veces, es posible que necesites cancelar una petición. Axios proporciona una forma de cancelar peticiones usando CancelToken
.
import axios from 'axios';
const CancelToken = axios.CancelToken;
let cancel;
axios.get('https://api.example.com/data', {
cancelToken: new CancelToken(function executor(c) {
cancel = c;
})
})
.then(response => {
console.log(response.data);
})
.catch(thrown => {
if (axios.isCancel(thrown)) {
console.log('Request canceled', thrown.message);
} else {
console.error('Error fetching data:', thrown);
}
});
// To cancel the request
cancel('Operation canceled by the user.');
Ejemplo del mundo real: Obteniendo datos de múltiples APIs
Juntemos todo con un ejemplo del mundo real. Supongamos que estás construyendo un panel de control que necesita obtener datos de usuario, publicaciones y comentarios de diferentes endpoints.
import axios from 'axios';
async function fetchDashboardData() {
try {
const [userData, postsData, commentsData] = await axios.all([
axios.get('https://api.example.com/users'),
axios.get('https://api.example.com/posts'),
axios.get('https://api.example.com/comments')
]);
console.log
('User Data:', userData.data);
console.log('Posts Data:', postsData.data);
console.log('Comments Data:', commentsData.data);
} catch (errors) {
console.error('Error fetching dashboard data:', errors);
}
}
fetchDashboardData();
En este ejemplo, usamos axios.all
para obtener datos de tres endpoints diferentes simultáneamente. Luego manejamos las respuestas juntas, registrando los datos en la consola.
Apidog: una herramienta gratuita para generar tu código Axios
Apidog es una plataforma de desarrollo de API colaborativa todo en uno que proporciona un conjunto de herramientas completo para diseñar, depurar, probar, publicar y simular APIs. Apidog te permite crear automáticamente código Axios para realizar peticiones HTTP.
Aquí está el proceso para usar Apidog para generar código Axios:
Paso 1: Abre Apidog y selecciona nueva petición

Paso 2: Introduce la URL del endpoint de la API al que quieres enviar una petición, introduce cualquier encabezado o parámetro de cadena de consulta que desees incluir con la petición, luego haz clic en "Design" para cambiar a la interfaz de diseño de Apidog.

Paso 3: Selecciona "Generate client code " para generar tu código.

Paso 4: Copia el código Axios generado y pégalo en tu proyecto.

Usando Apidog para enviar peticiones HTTP
Apidog ofrece varias características avanzadas que mejoran aún más su capacidad para probar peticiones HTTP. Estas características te permiten personalizar tus peticiones y manejar escenarios más complejos sin esfuerzo.
Paso 1: Abre Apidog y crea una nueva petición.

Paso 2: Encuentra o introduce manualmente los detalles de la API para la petición POST que quieres hacer.

Paso 3: Rellena los parámetros requeridos y cualquier dato que quieras incluir en el cuerpo de la petición.

Conclusión
Manejar múltiples peticiones a la API de manera eficiente es crucial para construir aplicaciones web robustas y de alto rendimiento. Axios, con sus potentes características y flexibilidad, hace que esta tarea sea sencilla y manejable. Al aprovechar axios.all
, axios.spread
, los interceptores y otras características avanzadas, puedes crear flujos de trabajo de obtención de datos fluidos y eficientes en tus aplicaciones.
No lo olvides, si quieres potenciar tu desarrollo de API, descarga Apidog gratis y explora su rico conjunto de características. Es un cambio de juego para cualquier desarrollador que trabaje con APIs.