Oi! Se você é um desenvolvedor, provavelmente já teve aqueles momentos em que precisa fazer várias chamadas de API em seus projetos. Não é a parte mais glamourosa da programação, mas é essencial. Hoje, vamos nos aprofundar em requisições múltiplas com Axios, uma maneira poderosa de lidar com essa tarefa de forma eficiente.
Mas espere, antes de começarmos, aqui está uma dica rápida: se você está procurando uma ferramenta de API poderosa para agilizar seu processo de desenvolvimento, confira Apidog. É gratuito e repleto de recursos que tornarão sua vida muito mais fácil.
Agora, vamos arregaçar as mangas e entrar nos detalhes de como fazer várias requisições com Axios!
O que é Axios?
Primeiro, vamos falar sobre o que é Axios. Axios é um cliente HTTP baseado em promessas popular para JavaScript. É usado para fazer requisições HTTP do navegador e Node.js, e é particularmente apreciado por sua facilidade de uso e flexibilidade. Com Axios, você pode enviar facilmente requisições HTTP assíncronas para pontos finais REST e realizar operações CRUD.

Por que usar Axios para múltiplas requisições?
Ao construir aplicações web modernas, muitas vezes há cenários em que você precisa buscar dados de várias fontes. Isso pode ser para preencher um painel com diferentes conjuntos de dados, realizar uma série de operações dependentes ou até mesmo apenas reunir todas as informações necessárias para exibir uma única página.
Lidar com várias requisições de API pode ser complicado. Você precisa gerenciar várias operações assíncronas, tratar erros com graça e garantir que sua aplicação não fique sobrecarregada. É aqui que o Axios brilha. Ele fornece uma maneira elegante e direta de gerenciar múltiplas requisições com recursos como:
- API baseada em promessas: Facilita o manuseio de requisições assíncronas.
- Suporte embutido para requisições simultâneas: Usando
axios.all
eaxios.spread
. - Interceptors: Para tratar transformações de requisições e respostas.
- Tratamento de erros: Simplifica a gestão de diferentes tipos de erros.
Introdução ao Axios
Antes de mergulharmos nas múltiplas requisições, vamos garantir que estamos na mesma página com os básicos do Axios.
Instalando Axios
Primeiro, você precisa instalar o Axios. Se você estiver usando npm, pode fazer isso com:
npm install axios
Ou, se preferir yarn:
yarn add axios
Requisição Básica com Axios
Aqui está um exemplo rápido de uma requisição 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('Erro ao buscar dados:', error);
});
Esse snippet simples busca dados da URL fornecida e os registra no console. Se houver um erro, ele registra a mensagem de erro.
Fazendo Várias Requisições com Axios
Agora, vamos passar para o tema principal: fazer várias requisições com Axios. Existem várias maneiras de lidar com isso, dependendo de suas necessidades.
Usando axios.all
e axios.spread
O método mais comum para lidar com múltiplas requisições é usando axios.all
e axios.spread
. Essas funções ajudam você a gerenciar requisições simultâneas e tratar suas respostas de uma maneira limpa e organizada.
Aqui está um exemplo:
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('Dados da primeira requisição:', responseOne.data);
console.log('Dados da segunda requisição:', responseTwo.data);
}))
.catch(errors => {
console.error('Erro ao buscar dados:', errors);
});
}
getData();
Neste exemplo, axios.all
recebe um array de promessas (nossas requisições HTTP) e aguarda que todas sejam resolvidas. A função axios.spread
então pega as respostas e as dispersa em argumentos individuais, facilitando o trabalho com cada resposta.
Tratando Requisições Dinâmicas
Às vezes, você não sabe de antemão quantas requisições precisará fazer. Nesses casos, você pode criar dinamicamente o array de promessas.
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(`Dados da requisição ${index + 1}:`, response.data);
});
}))
.catch(errors => {
console.error('Erro ao buscar dados:', errors);
});
}
const apiEndpoints = [
'https://api.example.com/data1',
'https://api.example.com/data2',
'https://api.example.com/data3'
];
fetchData(apiEndpoints);
Neste cenário, mapeamos o array de endpoints para criar um array de promessas. Esta é uma maneira poderosa de lidar com listas dinâmicas de chamadas de API.
Requisições Sequenciais com Axios
Há momentos em que você precisa garantir que uma requisição seja concluída antes de começar a próxima. Por exemplo, quando a segunda requisição depende do resultado da primeira. Nesses casos, você pode encadear suas requisições usando promessas.
import axios from 'axios';
function fetchSequentialData() {
axios.get('https://api.example.com/data1')
.then(response1 => {
console.log('Dados da primeira requisição:', response1.data);
return axios.get('https://api.example.com/data2');
})
.then(response2 => {
console.log('Dados da segunda requisição:', response2.data);
})
.catch(error => {
console.error('Erro ao buscar dados:', error);
});
}
fetchSequentialData();
Essa abordagem garante que a segunda requisição só comece após a primeira ter sido concluída com sucesso.
Tratamento de Erros em Múltiplas Requisições
Lidar com erros de forma eficaz é crucial ao trabalhar com múltiplas requisições. O Axios fornece várias maneiras de gerenciar erros, garantindo que sua aplicação possa lidar com problemas de forma elegante.
Capturando Erros para Requisições Individuais
Você pode lidar com erros para cada requisição individualmente adicionando um bloco .catch
a cada promessa:
import axios from 'axios';
const requestOne = axios.get('https://api.example.com/data1')
.catch(error => console.error('Erro na requisição um:', error));
const requestTwo = axios.get('https://api.example.com/data2')
.catch(error => console.error('Erro na requisição dois:', error));
axios.all([requestOne, requestTwo])
.then(axios.spread((responseOne, responseTwo) => {
if (responseOne) console.log('Dados da primeira requisição:', responseOne.data);
if (responseTwo) console.log('Dados da segunda requisição:', responseTwo.data);
}));
Capturando Todos os Erros Juntos
Alternativamente, você pode capturar todos os erros juntos no 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('Dados da primeira requisição:', responseOne.data);
console.log('Dados da segunda requisição:', responseTwo.data);
}))
.catch(error => {
console.error('Erro ao buscar dados:', error);
});
Essa abordagem é mais simples, mas menos granular, pois não distingue qual requisição falhou.
Otimizando Requisições Axios
Para aproveitar ao máximo o Axios, aqui estão algumas dicas e melhores práticas.
Usando Interceptors
Os interceptors permitem que você execute seu código ou modifique requisições/respostas antes que sejam tratadas por then
ou catch
. Eles são ótimos para adicionar cabeçalhos, registrar, tratar erros, etc.
import axios from 'axios';
// Adiciona um interceptor de requisição
axios.interceptors.request.use(request => {
console.log('Iniciando Requisição', request);
return request;
}, error => {
return Promise.reject(error);
});
// Adiciona um interceptor de resposta
axios.interceptors.response.use(response => {
console.log('Resposta:', response);
return response;
}, error => {
return Promise.reject(error);
});
Definindo Padrões Globais
Você pode definir opções de configuração padrão para o Axios. Isso pode ser útil para definir URLs base, cabeçalhos, timeouts, etc.
import axios from 'axios';
axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = 'Bearer token';
axios.defaults.timeout = 10000;
Cancelando Requisições
Às vezes, você pode precisar cancelar uma requisição. O Axios fornece uma maneira de cancelar requisições 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('Requisição cancelada', thrown.message);
} else {
console.error('Erro ao buscar dados:', thrown);
}
});
// Para cancelar a requisição
cancel('Operação cancelada pelo usuário.');
Exemplo do Mundo Real: Buscando Dados de Múltiplas APIs
Vamos juntar tudo com um exemplo real. Suponha que você esteja construindo um painel que precisa buscar dados de usuários, posts e comentários 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('Dados do Usuário:', userData.data);
console.log('Dados dos Posts:', postsData.data);
console.log('Dados dos Comentários:', commentsData.data);
} catch (errors) {
console.error('Erro ao buscar dados do painel:', errors);
}
}
fetchDashboardData();
Neste exemplo, usamos axios.all
para buscar dados de três endpoints diferentes simultaneamente. Em seguida, tratamos as respostas juntas, registrando os dados no console.
Apidog: uma ferramenta gratuita para gerar seu código Axios
Apidog é uma plataforma colaborativa de desenvolvimento de API tudo-em-um que fornece um conjunto abrangente de ferramentas para projetar, depurar, testar, publicar e simular APIs. O Apidog permite que você crie automaticamente código Axios para fazer requisições HTTP.
Eis o processo para usar o Apidog para gerar código Axios:
Passo 1: Abra o Apidog e selecione nova requisição

Passo 2: Insira a URL do endpoint da API para o qual deseja enviar uma requisição,insira qualquer cabeçalho ou parâmetros de string de consulta que deseja incluir com a requisição, em seguida clique em "Design" para mudar para a interface de design do Apidog.

Passo 3: Selecione "Gerar código do cliente" para gerar seu código.

Passo 4: Copie o código Axios gerado e cole-o em seu projeto.

Usando Apidog para enviar requisições HTTP
Apidog oferece vários recursos avançados que aprimoram ainda mais sua capacidade de testar requisições HTTP. Esses recursos permitem que você personalize suas requisições e trate cenários mais complexos sem esforço.
Passo 1: Abra o Apidog e crie uma nova requisição.

Passo 2: Encontre ou insira manualmente os detalhes da API para a requisição POST que deseja fazer.

Passo 3: Preencha os parâmetros necessários e quaisquer dados que você deseja incluir no corpo da requisição.

Conclusão
Lidar com múltiplas requisições de API de forma eficiente é crucial para construir aplicações web robustas e de alto desempenho. O Axios, com seus recursos poderosos e flexibilidade, torna essa tarefa simples e gerenciável. Ao aproveitar axios.all
, axios.spread
, interceptors e outros recursos avançados, você pode criar fluxos de trabalho de busca de dados eficientes e sem costura em suas aplicações.
Não se esqueça, se você quiser impulsionar seu desenvolvimento de API, baixe o Apidog gratuitamente e explore seu rico conjunto de recursos. É um divisor de águas para qualquer desenvolvedor que trabalhe com APIs.