Axios vs fetch: qual cliente HTTP?
Axios é uma biblioteca HTTP rica em recursos com interceptors e JSON automático; fetch é o primitivo nativo, sem dependências, do browser e do Node.
O Axios oferece conveniências que o fetch não traz de fábrica: parsing automático de JSON, interceptors de request/response, timeouts, progresso de upload e tratamento de erros consistente em respostas não-2xx, ao custo de uma dependência. O fetch é embutido em browsers modernos e no Node, não tem pegada de instalação e suporta streaming, mas exige tratamento manual de JSON e não rejeita em erros HTTP. O Axios ganha em conveniência e recursos; o fetch ganha em zero dependências e natividade de plataforma.
| Axios | fetch | |
|---|---|---|
| Dependência | Biblioteca externa | Nativo (sem instalação) |
| JSON | Automático | Manual (.json()) |
| Interceptors | Embutidos | Wrappers manuais |
| Erro em 4xx/5xx | Rejeita | Resolve (verificar ok) |
| Melhor para | Conveniência, interceptors | Sem dependências, nativo |
Caso de uso e recursos
O Axios se encaixa em apps que querem interceptors, JSON automático, timeouts e tratamento uniforme de erros sem escrever wrappers. O fetch se encaixa em times que minimizam dependências e tamanho de bundle, ou que querem streaming nativo da plataforma, dispostos a adicionar helpers finos para JSON e tratamento de erros.
Testes e CI
Ambos fazem mock de forma limpa com MSW ou nock; o fetch agora é nativo em ambientes de teste do Node. Qualquer um roda em managed runners, onde runners mais rápidos encurtam suítes de integração com HTTP mockado.
O veredito
Quer interceptors, JSON automático e tratamento uniforme de erros: Axios. Quer zero dependências e o fetch nativo da plataforma: a API nativa (opcionalmente com um wrapper fino). O Axios troca uma dependência por conveniência; o fetch troca conveniência por natividade.