Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] axios hoje em dia

Dei uma pesquisada sobre a biblioteca, e vi que hoje em dia o axios perdeu espaço pro prório fetch, não digo que ele foi totalmente superado pelo proprio metodo do js, mas que ele faz mais sentido em projetos grandes pra praticamente apenas deixar o codigo organizado. Isso é real?

1 resposta
solução!

Olá, Allan. Como vai?

Sua linha de pensamento está totalmente correta e reflete muito bem o cenário atual do desenvolvimento front-end. O que você descobriu na sua pesquisa é uma realidade consolidada no mercado.

O fetch foi introduzido nativamente nos navegadores para substituir o antigo e complexo XMLHttpRequest. No início, ele era muito simples, o que fazia o Axios ser a escolha favorita por entregar facilidades prontas, como a conversão automática para JSON e suporte a interceptadores. No entanto, o JavaScript evoluiu muito.

Hoje, a API fetch é extremamente poderosa, robusta e está disponível nativamente tanto no navegador quanto no Node.js (a partir da versão 18), dispensando a necessidade de instalar pacotes de terceiros para fazer requisições HTTP básicas.

Ainda assim, o Axios continua muito relevante. A decisão entre usar um ou outro geralmente depende do tamanho e da complexidade do projeto.


Quando o Fetch brilha?

  • Projetos pequenos e médios: Evita inflar o tamanho do seu projeto (bundle size) com dependências externas.
  • Aplicações Modernas (Next.js, Remix): Frameworks modernos estendem o comportamento do fetch nativo para adicionar recursos de cache e revalidação de dados diretamente no servidor.
  • Microserviços e Serverless: Onde cada milissegundo de inicialização importa, não carregar bibliotecas externas é uma grande vantagem.

Quando o Axios ainda faz sentido?

  • Projetos grandes e corporativos: Onde a organização da arquitetura de rede é fundamental.
  • Interceptadores de Requisição/Resposta (Interceptors): O Axios permite centralizar lógicas globais de forma muito simples. Um exemplo clássico é injetar um token de autenticação em todas as requisições ou tratar erros de forma global (como redirecionar o usuário para o login caso o servidor retorne o status 401).
  • Cancelamento de requisições simplificado: Embora o fetch use o AbortController, o Axios oferece uma sintaxe historicamente mais amigável para cancelar requisições duplicadas ou obsoletas.
  • Transformação de dados automática: Ele transforma objetos JavaScript em JSON e vice-versa automaticamente, além de tratar erros HTTP (como status 400 ou 500) diretamente no bloco catch, enquanto o fetch exige que você verifique manualmente a propriedade response.ok.

Para resumir e ilustrar essa diferença na prática de organização de código que você mencionou, veja como a mesma requisição com tratamento de erro e conversão de dados é feita em ambos:

Com Fetch nativo:

async function buscarDados() {
  try {
    const resposta = await fetch('https://api.exemplo.com/dados');
    
    // O fetch não rejeita a Promise em erros 400 ou 500, precisa validar manualmente
    if (!resposta.ok) {
      throw new Error(`Erro no servidor: ${resposta.status}`);
    }
    
    // É necessário converter manualmente para JSON
    const dados = await resposta.json();
    console.log(dados);
  } catch (erro) {
    console.error('Erro na requisição:', erro.message);
  }
}

Com Axios:

import axios from 'axios';

async function buscarDados() {
  try {
    // Conversão para JSON é automática e erros HTTP caem direto no catch
    const resposta = await axios.get('https://api.exemplo.com/dados');
    console.log(resposta.data);
  } catch (erro) {
    console.error('Erro na requisição:', erro.message);
  }
}

Portanto, você está coberto de razão: o Axios não morreu, mas deixou de ser uma obrigação e passou a ser uma escolha arquitetural para projetos que necessitam de gerenciamento avançado de requisições.

Espero que possa ter lhe ajudado!