Apidog

Plataforma de desarrollo de API colaborativa todo en uno

Diseño de API

Documentación de API

Depuración de API

Simulación de API

Prueba automatizada de API

Cómo realizar múltiples solicitudes con Axios

Domina Axios: múltiples peticiones para gestionar llamadas API concurrentes eficientemente. Aprende técnicas, manejo de errores y buenas prácticas para una obtención de datos robusta.

Daniel Costa

Daniel Costa

Updated on April 15, 2025

¡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 y axios.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.

button

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.

button

Paso 1: Abre Apidog y crea una nueva petición.

Apidog

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

Apidog

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

Apidog

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.

Cómo usar Lovable AI (Alternativa a Cursor para desarrolladores web)Tutoriales

Cómo usar Lovable AI (Alternativa a Cursor para desarrolladores web)

Aprende a crear cualquier web con Lovable en esta guía completa. Descubre procesos paso a paso, funciones innovadoras e integra herramientas gratuitas como Apidog para gestión API.

Daniel Costa

April 15, 2025

Cómo usar n8n con servidores MCPTutoriales

Cómo usar n8n con servidores MCP

Automatiza flujos con n8n y servidores MCP para IA. Guía técnica: configuración, APIs, nodo "MCP Server Trigger" y Apidog para pruebas.

Daniel Costa

April 14, 2025

Cómo añadir claves API personalizadas a Cursor: Una guía completaTutoriales

Cómo añadir claves API personalizadas a Cursor: Una guía completa

Este tutorial te guiará para configurar y gestionar claves API personalizadas en Cursor (OpenAI, Anthropic, Google y Azure).

Daniel Costa

April 11, 2025