Cliente HTTP para JavaScript (Node.js): principais bibliotecas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Cliente HTTP para JavaScript (Node.js): principais bibliotecas para trabalhar com rede



No desenvolvimento web moderno com Node.js, enviar requisições HTTP é uma das operações mais comuns. Seja para acessar uma API REST, baixar arquivos ou interagir com microsserviços — um cliente HTTP confiável é indispensável. Neste artigo, analisaremos detalhadamente as quatro melhores bibliotecas para JavaScript (Node.js): Axios, Got, node-fetch e undici. Você conhecerá suas características, desempenho e obterá exemplos de código prontos.



1. Axios — o padrão universal

Axios é o cliente HTTP mais popular para Node.js e navegadores. Ele é baseado em Promise e suporta interceptadores (interceptors), parsing automático de JSON, proteção contra CSRF e cancelamento de requisições.



Instalação:

npm install axios


Exemplo de requisição GET:

const axios = require('axios');

async function getUser(id) { try { const response = await axios.get(`https://api.example.com/users/${id}`); console.log(response.data); } catch (error) { console.error('Erro:', error.message); }}

getUser(1);


Exemplo de POST com cabeçalhos:

const axios = require('axios');

const data = { name: 'Alice', role: 'developer' };

axios.post('https://api.example.com/users', data, { headers: { 'Content-Type': 'application/json' }}).then(res => console.log(res.status));


Vantagens: simplicidade, ecossistema extenso, suporte a progresso de upload.

Desvantagens: tamanho do pacote (~100 KB), excessivo para tarefas simples.



2. Got — rápido e funcional

Got é um cliente HTTP leve com uma API rica. Ele suporta streaming, cache, tentativas repetidas e é mais rápido que o Axios.



Instalação:

npm install got


Exemplo com stream e tratamento de erros:

const got = require('got');const fs = require('fs');

async function downloadFile(url, outputPath) { try { const stream = got.stream(url); const fileStream = fs.createWriteStream(outputPath); stream.pipe(fileStream);

await new Promise((resolve, reject) => { stream.on('end', resolve); stream.on('error', reject); }); console.log('Arquivo baixado'); } catch (error) { console.error('Erro no download:', error.message); }}

downloadFile('https://example.com/file.zip', './file.zip');


Exemplo com tentativas repetidas:

const got = require('got');

got('https://api.example.com/data', { retry: { limit: 3, methods: ['GET'] }}).then(response => console.log(response.body));


Vantagens: tamanho pequeno, velocidade, retentativas integradas.

Desvantagens: API menos intuitiva para iniciantes.



3. node-fetch — sintaxe familiar do navegador

node-fetch é uma porta da Fetch API do navegador para Node.js. Ideal se você está acostumado com fetch no navegador e deseja um código uniforme.



Instalação:

npm install node-fetch


Exemplo com async/await:

const fetch = require('node-fetch');

async function getPosts() { const response = await fetch('https://jsonplaceholder.typicode.com/posts/1'); if (!response.ok) throw new Error('Erro HTTP ' + response.status); const data = await response.json(); console.log(data.title);}

getPosts();


Exemplo de envio de FormData:

const fetch = require('node-fetch');const FormData = require('form-data');

const form = new FormData();form.append('file', fs.createReadStream('./photo.jpg'));\

Recommendations