Fetch API e Axios
Fetch API
A Fetch API é uma moderna interface para fazer requisições HTTP no navegador. Utilizando o método fetch()
, toda a verbosidade associada ao XMLHttpRequest
é abstraída em uma única chamada de método. O fetch()
retorna uma Promise que resolve para o Response, permitindo que você lide com a resposta de maneira assíncrona.
fetch("home.html")
.then((response) => {
if (response.status !== 200) {
throw new Error();
}
return response.text();
})
.then((html) => console.log(html))
.catch((error) => console.error(error));
Axios
O Axios é uma biblioteca para fazer requisições HTTP em ambientes tanto de navegador quanto de servidor. Ele simplifica a realização de solicitações HTTP e tratamento de respostas, oferecendo uma interface mais amigável que a Fetch API. O Axios retorna uma Promise diretamente do método axios()
, facilitando o tratamento de requisições assíncronas.
Antes de usar o Axios em um script JS, é necessário incluir o seguinte trecho na página HTML para carregar a biblioteca:
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
axios("people.json").then((response) =>
loadElementsOnPage(response.data)
);
Axios VS Fetch API
Contexto
// people.json
[
{
"name": "Miguel",
"email": "miguel@email.com.br",
"salary": 27211,
"state": "MG",
"company": "Facebook",
"age": 34,
"gender": "M",
"cpf": "362.418.524-18"
},
{
"name": "Sophia",
"email": "sophia@company.com.br",
"salary": 6971,
"state": "DF",
"company": "Plastic Co.",
"age": 25,
"gender": "F",
"cpf": "742.316.671-52"
}
]
Fetch API
fetch("people.json")
.then((response) => response.json())
.then((json) => loadElementsOnPage(json));
Axios
axios("people.json").then((response) =>
loadElementsOnPage(response.data)
);
Ambas as abordagens, Fetch API e Axios, são eficazes para fazer requisições HTTP, e a escolha entre elas muitas vezes se resume a preferências pessoais e requisitos específicos do projeto. O Axios fornece uma interface mais consistente e amigável, enquanto a Fetch API é uma opção nativa com suporte em navegadores modernos.