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
Camila Pessôa, contato-tereza25
Camila Pessôa, contato-tereza25

Compartilhe

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. 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!

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?

Camila Pessôa
Camila Pessôa

Olá, sou a Camila ! Tenho 33 anos, sou mãe e ingressei na área de tecnologia por meio da robótica educacional. Participei do Bootcamp { Reprograma } com foco em Back-End /Node.js e curso Sistemas de Informação.Atualmente faço parte do Scuba-Team e tenho grande paixão por educação e tecnologia, pois acredito que essa combinação é transformadora!

Veja outros artigos sobre Programação