Axios Ă© uma biblioteca JavaScript bem conhecida. Ă um cliente HTTP baseado em promessa para navegadores e Node.js. Se vocĂȘ trabalhou como programador JavaScript nos Ășltimos anos, definitivamente utilizou esta biblioteca. Em outubro de 2019, o pacote Axios foi baixado da npm 25 milhĂ”es de vezes. Parece que o futuro do Axios Ă© sem nuvens. Mas e se eu lhe disser que o Axios Ă© um projeto morto? Ă exatamente disso que tratava uma
discussĂŁo no Reddit. Ou seja, estamos falando sobre o seguinte:
- O repositĂłrio do Axios GitHub tem um nĂvel muito baixo de atividade do desenvolvedor.
- Problemas e relaçÔes pĂșblicas sĂŁo ignorados.
- A equipe de desenvolvimento estĂĄ em silĂȘncio.
A situação é agravada pela
vulnerabilidade amplamente discutida. Esta vulnerabilidade foi relatada em 2017. Os autores do projeto a ignoraram por mais de dois anos.
Quando a biblioteca Axios se tornou popular, os navegadores nĂŁo tinham uma API que implementa um cliente HTTP baseado em promessa. A interface XML HTTP Request (XHR) padrĂŁo era inconveniente, era difĂcil trabalhar com ela. Os desenvolvedores aceitaram com prazer o Axios devido ao fato de que essa biblioteca tornou sua vida mais fĂĄcil.

A API de busca foi lançada em 2015. Por que ainda estamos usando o Axios em 2019? Vamos comparar essas duas tecnologias.
Volume do cĂłdigo do modelo
âFetch
fetch('https://jsonplaceholder.typicode.com/todos/1') .then(response => response.json()) .then(json => console.log(json))
âAxios
axios.get("https://jsonplaceholder.typicode.com/todos/1") .then(response => console.log("response", response.data))
Ao usar o Fetch, vocĂȘ precisa lidar com duas promessas. PorĂ©m, ao trabalhar com o Axios, temos acesso direto ao resultado JSON na propriedade de
data
do objeto de resposta.
O método
body mixin
json()
pega um fluxo de
resposta e o lĂȘ completamente. Ele retorna uma promessa que Ă© resolvida pelo resultado JSON da anĂĄlise do texto do corpo da solicitação.
VocĂȘ precisa usar ainda mais cĂłdigo padrĂŁo no Fetch ao trabalhar com solicitaçÔes POST.
âFetch
fetch("https://jsonplaceholder.typicode.com/posts", { method: "POST", body: JSON.stringify({ title: "Title of post", body: "Post Body" }) }) .then(res => { if (!response.ok) throw Error(response.statusText); return response.json(); }) .then(data => console.log(data)) .catch(error => console.log(error));
âAxios
axios .post("https://jsonplaceholder.typicode.com/posts", { title: "Title of post", body: "Body of post" }) .then(response => console.log(response.data)) .catch(error => console.log(error));
O uso do Axios evita a gravação de grandes quantidades de código padrão e torna o código mais limpo e claro.
Tratamento de erros
âFetch
fetch("https://jsonplaceholder.typicode.com/todos/100000") .then(response => { if (!response.ok) throw Error(response.statusText); return response.json(); }) .then(data => console.log("data", data)) .catch(error => { console.log("error", error); });
âAxios
axios .get("https://jsonplaceholder.typicode.com/todos/100000") .then(response => { console.log("response", response); }) .catch(error => { console.log("error", error); });
A biblioteca Axios relata erros de rede, mas a API Fetch nĂŁo. Ao trabalhar com a Busca, vocĂȘ sempre precisa verificar a propriedade
response.ok
. Para simplificar a solução desse problema, a verificação desse erro pode ser emitida como uma função separada:
const checkForError = response => { if (!response.ok) throw Error(response.statusText); return response.json(); }; fetch("https://jsonplaceholder.typicode.com/todos/100000") .then(checkForError) .then(data => console.log("data", data)) .catch(error => { console.log("error", error); });
Recursos ausentes
O Axios pode monitorar o progresso do upload de dados. A busca nĂŁo suporta isso. Isso pode ser um fator decisivo na escolha da tecnologia para aqueles que estĂŁo desenvolvendo um aplicativo que permite aos usuĂĄrios fazer upload de fotos ou arquivos de vĂdeo no servidor.
const config = { onUploadProgress: event => console.log(event.loaded) }; axios.put("/api", data, config);
Bibliotecas alternativas
Aqui estĂŁo algumas alternativas para o Axios e a API Fetch:
- Ky Ă© um cliente HTTP miniatura e inteligente baseado em
window.fetch
. - Superagent Ă© uma pequena biblioteca cliente HTTP progressiva baseada em
XMLHttpRequest
.
SumĂĄrio
O que devo usar em 2019? Depende muito. Por exemplo, se vocĂȘ precisar acompanhar o andamento do upload de materiais para um servidor, o Axios ou o Superagent Ă© melhor para vocĂȘ. Se vocĂȘ pode lidar com as limitaçÔes de Buscar, Ă© melhor usar esta API. E, para melhorar um pouco o cĂłdigo de busca, tente uma biblioteca de wrapper como o Ky.
Caros leitores! Quais clientes HTTP vocĂȘ usa em seus projetos?
