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

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
```html

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

O desenvolvimento moderno em Node.js raramente acontece sem interação com serviços externos. Seja uma REST API, endpoints GraphQL ou streaming de dados — você precisará de um cliente HTTP confiável. Neste artigo, vamos analisar as melhores bibliotecas para realizar requisições HTTP no ambiente Node.js, suas características e exemplos de uso.

1. Axios — a escolha universal

Axios é o cliente HTTP mais popular para Node.js e navegadores. Ele é baseado em promises, suporta interceptadores (interceptors), transformação automática de JSON e cancelamento de requisições.

Instalação

npm install axios

Exemplo de requisição GET

const axios = require('axios');

async function getUsers() {
  try {
    const response = await axios.get('https://jsonplaceholder.typicode.com/users');
    console.log(response.data);
  } catch (error) {
    console.error('Erro:', error.message);
  }
}

getUsers();

Características:

  • Suporte a CancelToken para cancelar requisições
  • Tratamento automático de erros HTTP (status 4xx e 5xx)
  • Funciona tanto no servidor quanto no navegador
  • Suporte a progresso de upload/download

2. Got — desempenho e flexibilidade

Got é uma biblioteca leve e rápida, criada especificamente para Node.js. Ela oferece uma API rica e excelente desempenho por utilizar os módulos http e https diretamente.

Instalação

npm install got

Exemplo de requisição POST

const got = require('got');

async function createPost() {
  try {
    const response = await got.post('https://jsonplaceholder.typicode.com/posts', {
      json: {
        title: 'Novo post',
        body: 'Conteúdo do post',
        userId: 1
      },
      responseType: 'json'
    });
    console.log(response.body);
  } catch (error) {
    console.error('Erro:', error.message);
  }
}

createPost();

Características:

  • Suporte a streams e paginação
  • Suporte embutido para novas tentativas (retry)
  • Trabalho com cookies e cache
  • Suporte a HTTP/2 (através de http2-wrapper)

3. Node.js Fetch API — padrão nativo

A partir do Node.js 18, a Fetch API tornou-se um módulo nativo (disponível globalmente). É a implementação da mesma API dos navegadores, o que simplifica o código universal.

Exemplo de uso

async function fetchData() {
  try {
    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);
  } catch (error) {
    console.error('Erro:', error.message);
  }
}

fetchData();

Características:

  • Não requer instalação — nativo no Node.js 18+
  • API padrão, familiar para desenvolvedores frontend
  • Suporte a AbortController para cancelar requisições
  • Recursos limitados em comparação com Axios/Got (por exemplo, sem interceptadores)

4. undici — cliente HTTP/1.1 de alto desempenho

undici é um cliente HTTP rápido e moderno que está na base do Fetch nativo do Node.js. Ele é otimizado para máxima taxa de transferência.

Instalação

npm install undici

Exemplo de requisição

const { request } = require('undici');

async function fetchWithUndici() {
  try {
    const { statusCode, body } = await request('https://jsonplaceholder.typicode.com/users');
    const data = await body.json();
    console.log('Status:', statusCode);
    console.log('Da
```                    

Recommendations