Axios vs Fetch: Qual é o Melhor para Requisições HTTP

Existem muitas maneiras de fazer requisições HTTP em JavaScript, mas duas das mais populares são Axios e fetch(). Neste post, vamos comparar esses dois métodos e ver qual é o melhor para diferentes cenários.

Miguel Oliveira

Miguel Oliveira

21 maio 2025

Axios vs Fetch: Qual é o Melhor para Requisições HTTP

As solicitações HTTP são essenciais para se comunicar com servidores e APIs em aplicações web. Existem muitas maneiras de fazer solicitações HTTP em JavaScript, mas duas das mais populares são Axios e fetch(). Neste post, vamos comparar e contrastar Axios e Fetch() e ver qual é melhor para diferentes cenários.

button

O que é Axios?

Axios é uma biblioteca de terceiros que fornece um cliente HTTP baseado em promessas para fazer solicitações HTTP. Axios é amplamente utilizado na comunidade JavaScript e é conhecido por sua simplicidade e flexibilidade.

Sintaxe Básica do Axios

A sintaxe básica da biblioteca Axios é a seguinte:

axios(config)
  .then(response => console.log(response.data))
  .catch(error => console.error('Erro:', error));

Principais recursos:

  1. Pode aceitar um objeto contendo tanto a URL quanto a configuração como parâmetro, ou objetos de URL e configuração separados.
  2. Usa a propriedade data para enviar dados ao servidor, lidando automaticamente com a conversão de JSON.
  3. Retorna os dados do servidor diretamente na propriedade data do objeto de resposta.
  4. Manipula automaticamente os códigos de status de erro HTTP, passando-os para o bloco catch.
  5. Fornece um mecanismo de manipulação de erros mais simplificado.

Exemplo:

axios({
  method: 'post',
  url: 'https://api.example.com/data',
  data: {
    key: 'value'
  }
})
  .then(response => console.log(response.data))
  .catch(error => {
    if (error.response) {
      console.error('O servidor respondeu com:', error.response.status);
    } else if (error.request) {
      console.error('Nenhuma resposta recebida');
    } else {
      console.error('Erro:', error.message);
    }
  });

Por que você deve usar Axios?

Ele possui muitos recursos que facilitam e tornam conveniente seu uso, como:

O que é Fetch()?

fetch() é uma API embutida que vem com o JavaScript nativo. É uma API web assíncrona que retorna os dados na forma de promessas. fetch() é suportado por todos os navegadores modernos, portanto, você não precisa importar nenhuma biblioteca externa para usá-lo. Alguns dos recursos do fetch() são:

Como Usar Axios para Fazer Solicitações HTTP?

Para usar Axios, você precisa instalá-lo usando npm ou yarn:

npm install axios

E aqui está como instalar Axios usando yarn:

yarn add axios

Se você preferir usar pnpm, pode instalar o Axios usando o seguinte comando:

pnpm install axios

Alternativamente, você pode usar uma rede de entrega de conteúdo (CDN) para incluir Axios em seu projeto. Aqui está como incluir o Axios usando um CDN:

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

Então, você pode importá-lo em seu arquivo JavaScript e usá-lo para fazer solicitações HTTP. Por exemplo, para fazer uma solicitação GET para uma URL, você pode usar axios.get():

import axios from 'axios';

axios.get('https://example.com/api')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

Fazendo Solicitações HTTP com Fetch

Para usar fetch(), você não precisa instalar nada, pois já está disponível no navegador. Você pode usar a função fetch() para fazer solicitações HTTP. Por exemplo, para fazer uma solicitação GET para uma URL, você pode usar o fetch() assim:

fetch('https://example.com/api')
  .then(response => {
    return response.json();
  })
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });

Observe que:

Sintaxe Básica do Fetch

Certo. Eu fornecerei o conteúdo em inglês, organizado em duas partes separadas, conforme solicitado.

A sintaxe básica da API Fetch é a seguinte:

fetch(url, options)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Erro:', error));

Principais recursos:

  1. URL como o primeiro argumento, objeto de configuração opcional como o segundo argumento.
  2. Usa a propriedade body para enviar dados ao servidor, exigindo conversão manual dos dados para string.
  3. Retorna um objeto Response contendo informações completas da resposta.
  4. Somente entra no bloco catch em erros de rede, não em códigos de status de erro HTTP.
  5. Exige verificação manual dos códigos de status de resposta para lidar com erros HTTP.

Exemplo:

fetch('https://api.example.com/data', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ key: 'value' })
})
  .then(response => {
    if (!response.ok) {
      throw new Error('Erro HTTP ' + response.status);
    }
    return response.json();
  })
  .then(data => console.log(data))
  .catch(error => console.error('Erro:', error));

Axios vs Fetch: Enviando uma Solicitação GET com Parâmetros de Consulta:

// Axios
axios.get('/api/data', {
  params: {
    name: 'Alice',
    age: 25
  }
})
.then(response => {
  // lidar com a resposta
})
.catch(error => {
  // lidar com o erro
});

// Fetch
const url = new URL('/api/data');
url.searchParams.append('name', 'Alice');
url.searchParams.append('age', 25);

fetch(url)
.then(response => response.json())
.then(data => {
  // lidar com os dados
})
.catch(error => {
  // lidar com o erro
});

Axios vs Fetch: Enviando uma Solicitação POST com um Corpo JSON:

// Axios
axios.post('/api/data', {
  name: 'Bob',
  age: 30
})
.then(response => {
  // lidar com a resposta
})
.catch(error => {
  // lidar com o erro
});

// Fetch
fetch('/api/data', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'Bob',
    age: 30
  })
})
.then(response => response.json())
.then(data => {
  // lidar com os dados
})
.catch(error => {
  // lidar com o erro
});

Axios vs Fetch: Definindo um Timeout para a Solicitação:

// Axios
axios.get('/api/data', {
  timeout: 5000 // 5 segundos
})
.then(response => {
  // lidar com a resposta
})
.catch(error => {
  // lidar com o erro
});

// Fetch
const controller = new AbortController();
const signal = controller.signal;

setTimeout(() => {
  controller.abort(); // abortar após 5 segundos
}, 5000);

fetch('/api/data', { signal })
.then(response => response.json())
.then(data => {
  // lidar com os dados
})
.catch(error => {
  // lidar com o erro
});

Axios vs Fetch: Usando a Sintaxe async/await:

// Axios
async function getData() {
  try {
    const response = await axios.get('/api/data');
    // lidar com a resposta
  } catch (error) {
    // lidar com o erro
  }
}

// Fetch
async function getData() {
  try {
    const response = await fetch('/api/data');
    const data = await response.json();
    // lidar com os dados
  } catch (error) {
    // lidar com o erro
  }
}

Axios vs Fetch: Compatibilidade Retroativa

A compatibilidade retroativa refere-se à capacidade de um sistema ou aplicação mais novo de funcionar com versões antigas, garantindo uma transição suave e prevenção de interrupções ou falhas ao atualizar. É crucial no desenvolvimento de software, desenvolvimento web e ecossistemas de tecnologia para manter a estabilidade, compatibilidade e versões e plataformas consistentes.

Axios:

Fetch:

Axios vs Fetch: Manipulação de Erros

A manipulação de erros é um aspecto importante de fazer solicitações HTTP, pois permite que você lide com diferentes cenários, como falhas de rede, erros de servidor ou respostas inválidas. Fetch e Axios têm maneiras diferentes de lidar com erros, que eu vou comparar com alguns exemplos.

Axios:

No Axios, se houver uma falha na solicitação, ele gera um erro e você pode facilmente lidar com o erro com um bloco try-catch e obter os dados do erro de error.response.data. Por exemplo:

// Manipulação de erros do Axios com try-catch
try {
  const response = await axios.get('/api/data');
  // lidar com a resposta
} catch (error) {
  // lidar com o erro
  console.log(error.response.data);
}

Fetch:

No Fetch, se houver uma falha na solicitação, ele não gera um erro, mas retorna um objeto de resposta com a propriedade ok definida como falsa. Você deve verificar a propriedade ok e lançar um erro manualmente se quiser usar um bloco try-catch.

Alternativamente, você pode usar a propriedade response.ok para manipular diferentes casos no método then. Por exemplo:

// Manipulação de erros do Fetch com try-catch
try {
  const response = await fetch('/api/data');
  // verificar status da resposta
  if (!response.ok) {
    // lançar erro se o status não for ok
    throw new Error(`Erro HTTP! status: ${response.status}`);
  }
  // lidar com a resposta
} catch (error) {
  // lidar com o erro
  console.log(error.message);
}

// Manipulação de erros do Fetch com response.ok
fetch('/api/data')
  .then(response => {
    // verificar status da resposta
    if (response.ok) {
      // lidar com a resposta
    } else {
      // lidar com o erro
      console.log(`Erro HTTP! status: ${response.status}`);
    }
  })
  .catch(error => {
    // lidar com erro de rede
    console.log(error.message);
  });

Outra diferença entre Fetch e Axios é como eles lidam com códigos de status não 200. Axios considera qualquer código de status fora da faixa 2xx como um erro e rejeita a promessa. Fetch considera qualquer resposta HTTP válida (mesmo 4xx ou 5xx) como um sucesso e resolve a promessa.

Isso significa que você tem que tratar códigos de status não 200 de forma diferente no Fetch e no Axios. Por exemplo:

// Manipulação de erros do Axios para códigos de status não 200
axios.get('/api/data')
  .then(response => {
    // lidar com a resposta
  })
  .catch(error => {
    // lidar com o erro
    if (error.response) {
      // o servidor respondeu com um código de status fora de 2xx
      console.log(error.response.status);
      console.log(error.response.data);
    } else {
      // erro de rede ou solicitação foi abortada
      console.log(error.message);
    }
  });

// Manipulação de erros do Fetch para códigos de status não 200
fetch('/api/data')
  .then(response => {
    // verificar status da resposta
    if (response.ok) {
      // lidar com a resposta
    } else {
      // o servidor respondeu com um código de status fora de 2xx
      console.log(response.status);
      return response.json();
    }
  })
  .then(data => {
    // lidar com os dados de erro
    console.log(data);
  })
  .catch(error => {
    // lidar com erro de rede ou solicitação foi abortada
    console.log(error.message);
  });

Axios vs Fetch: Qual é o Melhor para Fazer Solicitações HTTP?

Não existe uma resposta definitiva sobre qual é melhor, pois depende de suas preferências e necessidades. No entanto, aqui estão algumas diretrizes gerais para ajudá-lo a decidir:

Gerar Código Axios/Fetch com Apidog

Apidog é uma plataforma colaborativa de desenvolvimento de APIs tudo-em-um que fornece um conjunto abrangente de ferramentas para projetar, depurar, testar, publicar e simular APIs. Apidog permite que você crie automaticamente código Axios para fazer solicitações HTTP.

button

Aqui está o processo para usar o Apidog para gerar código Axios:

Passo 1: Abra o Apidog e selecione nova solicitação

Passo 2: Insira a URL do endpoint da API para o qual deseja enviar uma solicitação, insira quaisquer cabeçalhos ou parâmetros de string de consulta que você deseja incluir com a solicitação, e 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 Solicitações HTTP

Apidog oferece vários recursos avançados que aprimoram ainda mais sua capacidade de testar solicitações HTTP. Esses recursos permitem que você personalize suas solicitações e lide com cenários mais complexos sem esforço.

button

Passo 1: Abra o Apidog e crie uma nova solicitação.

Apidog

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

Apidog

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

Apidog

Conclusão

Tanto o Axios quanto o fetch() são métodos poderosos e confiáveis para fazer solicitações HTTP em JavaScript. Você pode escolher aquele que se adapta melhor ao seu projeto e estilo, ou até mesmo usar ambos para diferentes propósitos. O importante é entender como eles funcionam e como usá-los de forma eficaz.

Usar o Apidog não só economiza seu tempo e esforço valiosos, mas também garante que seu código esteja preciso e livre de erros. Com sua interface amigável e recursos intuitivos, o Apidog é uma ferramenta indispensável para qualquer desenvolvedor que trabalhe com solicitações Axios. Boa codificação!

button

Explore more

Como Usar o Ollama: Guia Completo para Iniciantes sobre LLMs Locais com Ollama

Como Usar o Ollama: Guia Completo para Iniciantes sobre LLMs Locais com Ollama

O cenário da inteligência artificial está em constante evolução, com os Grandes Modelos de Linguagem (LLMs) se tornando cada vez mais poderosos e acessíveis. Embora muitos interajam com esses modelos através de serviços baseados na nuvem, há um movimento crescente focado em executá-los diretamente em computadores pessoais. É aqui que entra o Ollama. O Ollama é uma ferramenta potente, porém fácil de usar, projetada para simplificar drasticamente o complexo processo de baixar, configurar e executa

28 abril 2025

Onde Baixar Swagger UI em Português Grátis

Onde Baixar Swagger UI em Português Grátis

Explore a dificuldade de obter uma interface em português para o Swagger UI e saiba por que o Apidog é uma alternativa de plataforma poderosa para o desenvolvimento de APIs.

23 abril 2025

Onde Baixar o Postman em Português Grátis

Onde Baixar o Postman em Português Grátis

No mundo do desenvolvimento de software, especialmente ao trabalhar com APIs, ferramentas eficientes são essenciais. Postman se tornou um nome conhecido, uma plataforma popular usada por milhões de desenvolvedores para criar, testar e gerenciar APIs. No entanto, para muitos usuários de língua portuguesa, uma pergunta comum surge: é possível ter o Postman em português? A resposta curta é que Postman não oferece atualmente suporte nativo em português para sua interface de usuário. Mas não se preo

21 abril 2025

Pratique o design de API no Apidog

Descubra uma forma mais fácil de construir e usar APIs