Revolução no Node.js: adeus ao Axios e fetch API na versão 17.5.0
![Revolução no Node.js: adeus ao Axios e fetch API na versão 17.5.0](assets/revolucao-node-js-adeus-axios-fetch-api-versao-17-5-0/revolucao-node-js-adeus-axios-fetch-api-versao-17-5-0.jpg)
Introdução
Toda pessoa estudante de programação que se preze já precisou usar bibliotecas (a famosa “lib”) no desenvolvimento de suas aplicações. Um exemplo são as libs Axios e Fetch, muito utilizadas principalmente no front-end e back-end para consumir APIs externas.
Recentemente o Node.JS v17.5 passou por duas mudanças que movimentaram opiniões, então vamos explicar como essa mudança impacta em questões de efetividade e agilidade na produção de código, além de comparar os prós e contras dessa atualização. Vamos lá?
Recordar é viver
Para começar, vamos relembrar como funcionam as libs Axios, Fetch e Node Fetch.
Com uma excelente reputação na comunidade, o Axios é uma lib Javascript muito usada para fazer solicitações HTTP do Node.js ou XMLHttpRequests
através do navegador. Também suporta a API Promise que é nativa do JS ES6, transforma dados em JSON, transforma e intercepta dados de requisições e respostas (request /response). Além de tudo isso, do lado do cliente suporta a proteção contra XSRF.
Na linguagem Javascript, o Axios é uma alternativa ao método fetch(), isso porque ele consegue fazer análise automática de JSON e trabalha muito bem em parceria com o Express, enquanto o Axios envia a solicitação da web, o Express responde essas solicitações.
Em contrapartida, é um pacote externo que você precisa instalar no seu projeto, diferente do Fetch que já vem embutido no browser, consequentemente mais leve que o Axios.
Para quem é do time node-fetch, sabe que terá facilidade e leveza na instalação do módulo. Com um simples npm install node-fetch
você tem os recursos do fetch de forma bem mais direta e sem precisar implementar o XMLHttpRequest
, ou seja, é um atrativo para quem gosta de um código mais limpo e organizado.
Um exemplo do node-fetch utilizando função assíncrona async/await:
const express = require("express");
const fetch = require("node-fetch");
const app = express();
app.get('/', async function(req, res){
const response = await fetch('https://dog.ceo/api/breeds/list/all')
const app = await response.json()
console.log(app)
})
app.listen(3000);
module.export = app
Observe que na aplicação você poderá precisar de frameworks e talvez outras bibliotecas, além do node-fetch, isso pode tornar a aplicação pesada com tantas dependências.
De forma simples, a novidade no ecossistema Node.js é uma forma nativa de implementar o Fetch API sem lib ou instalação de módulos externos.
Vamos conferir como fica no código?
Node e o Fetch nativo na prática
Como já mencionamos, essa nova feature está disponível para a versão v17.5.0 do Node.js. Então se você usa a LTS (Long Team Support, ou em português, versões de longo prazo) ou anterior, vai precisar continuar com a instalação de recursos externos.
Para você que está usando uma versão diferente, uma ótima dica é utilizar o NVM ou Node Version Manager, para baixar diferentes versões do Node.js na sua máquina.
Como eu uso o Fetch API nativo?
Para adicionar um suporte experimental a Fetch API, insira a flag:
--experimental-fetch
Agora você terá o fetch
, Request
, Response
e o Headers
como globais. Depois é só consumir a Fetch API! Aqui vai um exemplo muito simples:
const res = await fetch('https://dog.ceo/api/breeds/list/all');
const json = await res.json();
console.log(json);
Agora é só lançar a requisição que a API externa retorna de forma mais simples!
![A animação mostra o ator Keanu Reeves com uma camisa branca e calça jeans agachado em um parque, ele joga uma bolinha para seu cachorro e o cão da raça pit-bull, com pêlos escuros, segue a bolinha.](assets/revolucao-node-js-adeus-axios-fetch-api-versao-17-5-0/imagem1.gif)
![Banner da Escola de Programação: Matricula-se na escola de Programação. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!](assets/alura-matricula-maior-escola-tecnologia-brasil-mais-500-mil-estudantes/matricula-escola-programacao-alura-saiba-mais-versao-mobile.png)
Conclusão
Há muitas razões para você considerar o uso do fetch() no Node.js, pois além de ser excelente para realizar requisições simples, não precisamos nos preocupar com possíveis alterações em libs externas e consequentemente com comprometimento de nossas aplicações. Contudo é importante lembrar que o Fetch nativo ainda não está disponível para a versão LTS, isso significa que pode haver problemas de versões ou de instabilidade na última versão. Porém, não é nada que comprometa a nova implementação.
O Fetch nativo também tem como referência o undici, o que garante uma melhora significativa na latência e taxa de transferência de arquivos.
E você, o que achou dessa novidade?
Compartilha com a gente no servidor da Alura: Link para o Discord da Alura.
E então, vamos aprender mais?