Cliente HTTP para JavaScript (Node.js): top bibliotecas
No desenvolvimento web moderno com Node.js, o envio de requisições HTTP é uma das operações mais frequentes. O módulo embutido http e https é muito de baixo nível, por isso a comunidade criou diversas bibliotecas convenientes. Neste artigo, analisaremos os quatro melhores clientes HTTP para Node.js em 2025: Axios, Got, SuperAgent e Node Fetch. Você conhecerá suas características, pontos fortes e obterá exemplos de código prontos.
1. Axios — o padrão universal
Axios é o cliente HTTP mais popular para JavaScript. Funciona tanto no navegador quanto no Node.js. Principais vantagens: suporte a Promises, transformação automática de JSON, interceptadores de requisições/respostas e proteção embutida contra XSRF.
const axios = require('axios');
// Requisição GETasync function getUser() { try { const response = await axios.get('https://api.github.com/users/octocat'); console.log(response.data); } catch (error) { console.error('Erro:', error.message); }}
// Requisição POST com dadosasync function createPost() { const response = await axios.post('https://jsonplaceholder.typicode.com/posts', { title: 'Novo post', body: 'Conteúdo do post', userId: 1 }, { headers: { 'Content-Type': 'application/json' } }); console.log('Criado:', response.status);}
getUser();createPost();Quando escolher Axios: se você precisa de uma ferramenta universal com baixa barreira de entrada, suporte a progresso de upload e excelente documentação.
2. Got — desempenho e API moderna
Got é um cliente HTTP rápido e leve, construído sobre Promises. Ele oferece um rico conjunto de funcionalidades: redirecionamento automático, cache, tentativas repetidas em caso de erro, suporte a streams e cookies. Got utiliza http2-wrapper para HTTP/2.
const got = require('got');
// Requisição GET simplesasync function fetchData() { const response = await got('https://api.github.com/users/octocat').json(); console.log(response);}
// Download de arquivo com progressoasync function downloadFile() { const stream = got.stream('https://example.com/file.zip'); stream.on('downloadProgress', (progress) => { console.log(`Baixado: ${(progress.percent * 100).toFixed(1)}%`); }); stream.pipe(require('fs').createWriteStream('file.zip'));}
fetchData();Quando escolher Got: para aplicações de alta carga, onde velocidade, suporte a transmissão de dados em stream e opções de configuração avançadas são importantes.
3. SuperAgent — flexibilidade e encadeamento de chamadas
SuperAgent é um dos clientes HTTP mais antigos, conhecido por sua interface fluente (encadeamento de métodos). Ele suporta progresso, timeouts, serialização, upload de arquivos e funciona tanto no Node.js quanto no navegador.
const superagent = require('superagent');
// GET com parâmetros de querysuperagent .get('https://api.github.com/search/repositories') .query({ q: 'nodejs', sort: 'stars', order: 'desc' }) .set('Accept', 'application/json') .then(res => { console.log('Repositórios encontrados:', res.body.total_count); }) .catch(err => console.error(err));
// Envio de formuláriosuperagent .post('https://httpbin.org/post') .type('form') .send({ username: 'test', password: '12345' }) .then(res => console.log(res.body));Quando escolher SuperAgent: se você gosta da sintaxe de encadeamento legível, precisa de suporte a versões antigas do Node.js ou de manipulação complexa de formulários e arquivos.
4. Node Fetch — API familiar do navegador
Node Fetch é uma adaptação da Fetch API nativa do navegador para Node.js. Ideal para desenvolvedores acostumados com o fetch padrão. Leve, minimalista, mas requer polyfills adicionais para funcionalidades avançadas.