https://a.storyblok.com/f/270183/93580/3ad4ac9fcc/http_requests_node_js.png

5 maneiras de fazer solicitações HTTP no Node.js

Publicado em October 23, 2023

Tempo de leitura: 6 minutos

Introdução

Aprender a fazer solicitações HTTP no Node.js pode parecer complicado, já que há dezenas de bibliotecas disponíveis, e cada solução afirma ser mais eficiente do que a anterior. Algumas bibliotecas oferecem suporte multiplataforma, enquanto outras se concentram no tamanho do pacote ou na experiência do desenvolvedor.

Nesta postagem, vamos explorar cinco das formas mais populares de fazer solicitações HTTP no Node.js, com instruções passo a passo para cada método.

Primeiro, abordaremos as solicitações HTTP e HTTPS usando a biblioteca padrão. Depois disso, mostraremos como usar alternativas como o Node Fetch, o Axios e o SuperAgent.

Pré-requisitos

Antes de começar, certifique-se de ter o seguinte:

Como fazer solicitações HTTP no Node.js (5 métodos)

A seguir, vamos mostrar como fazer solicitações HTTP no Node.js por meio dos cinco métodos a seguir:

  1. Biblioteca Padrão (Módulo HTTP)

  2. Biblioteca Padrão (Módulo HTTPS)

  3. Axios

  4. Busca de nó

  5. SuperAgent

1. Biblioteca padrão (módulo HTTP)

A biblioteca padrão do Node.js vem equipada com o módulo padrão http . Ele permite fazer uma solicitação HTTP sem a necessidade de adicionar pacotes externos. No entanto, como o módulo é de baixo nível, ele poderia ser mais intuitivo para os desenvolvedores.

Além disso, você precisaria usar fluxos assíncronos para fragmentar os dados, já que o recurso async/await para solicitações HTTP não pode ser usado com essa biblioteca. Os dados da resposta precisariam, então, ser analisados manualmente.

Normalmente, você usaria o Módulo HTTP para fins de teste ou demonstração, já que ele não é seguro.

Aqui está um exemplo simples de como fazer uma GET solicitação usando o http módulo:

const http = require('http');

const options = {
  hostname: 'example.com',
  port: 80,
  path: '/',
  method: 'GET',
};

const req = http.request(options, (res) => {
  let data = '';

  res.on('data', (chunk) => {
    data += chunk;
  });

  res.on('end', () => {
    console.log(data);
  });
});

req.end();

2. Biblioteca padrão (módulo HTTPS)

Se você precisar fazer solicitações HTTPS seguras no Node.js, pode usar o https módulo, que também está integrado à biblioteca padrão. O uso é bastante semelhante ao do http , mas com segurança adicional. Veja um exemplo:

const https = require('https');

const options = {
  hostname: 'example.com',
  port: 443,
  path: '/',
  method: 'GET',
};

const req = https.request(options, (res) => {
  let data = '';

  res.on('data', (chunk) => {
    data += chunk;
  });

  res.on('end', () => {
    console.log(data);
  });
});

req.end();

3. Axios

Axios é uma biblioteca de cliente HTTP popular para Node.js que oferece uma maneira mais intuitiva e rica em recursos para realizar solicitações HTTP. O Axios simplifica o tratamento de erros e oferece recursos como análise automática de JSON e interceptadores de solicitação/resposta, tornando-o uma excelente opção para diversos cenários de solicitações HTTP.

Digite o seguinte comando no seu terminal para instalar o Axios a partir do npm:

npm install axios

O trecho de código a seguir mostra como usar o Axios para fazer uma GET solicitação:

const axios = require('axios');

axios.get('https://example.com')
  .then((response) => {
    console.log(response.data);
  })
  .catch((error) => {
    console.error(error);
  });

4. Busca de nó

Node Fetch é uma biblioteca JavaScript desenvolvida especificamente para o Node.js que simplifica a realização de solicitações HTTP. Ela oferece uma abordagem direta e baseada em Promises para buscar recursos da internet ou de um servidor, como solicitações GET, POST, PUT e DELETE. Projetada para aplicativos do lado do servidor, ela é compatível com a API Fetch, permitindo uma transição fácil do código entre ambientes do lado do cliente e do lado do servidor.

Além disso, observe que extensões úteis , como limite de redirecionamentos, limite de tamanho de resposta e erros explícitos para solução de problemas estão disponíveis para uso com o Node Fetch.

Digite o seguinte comando no seu terminal para instalar o Node Fetch a partir do npm:

npm install node-fetch

O trecho de código a seguir mostra como usar o Node Fetch para fazer uma solicitação:

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

fetch('https://example.com')
  .then((response) => response.text())
  .then((data) => {
    console.log(data);
  })
  .catch((error) => {
    console.error(error);
  });

5. SuperAgent

SuperAgent é um cliente HTTP leve e flexível que suporta promessas e sintaxe do tipo callback. É conhecido por sua simplicidade e facilidade de uso.

Digite o seguinte comando no seu terminal para instalar o SuperAgent a partir do npm:

npm install superagent

O trecho de código a seguir mostra como usar o SuperAgent para fazer uma solicitação:

const request = require('superagent');

request.get('https://example.com')
  .then((response) => {
    console.log(response.text);
  })
  .catch((error) => {
    console.error(error);
  });

Conclusão

Este post mostrou como implementar a funcionalidade de solicitações HTTP utilizando algumas das bibliotecas atualmente consideradas as mais populares no Node.js.

Outras linguagens também contam com uma infinidade de bibliotecas para lidar com solicitações HTTP. Sobre qual linguagem você gostaria que escrevêssemos na próxima vez? Conte para a gente! Adoraríamos ouvir sua opinião ou esclarecer quaisquer dúvidas no Twitter ou na Comunidade de Desenvolvedores da Vonage no Slack.

Leituras complementares

Compartilhar:

https://a.storyblok.com/f/270183/400x400/7cdff37c0e/michael-crump.png
Michael CrumpGerente de Experiências dos Desenvolvedores

Michael Crump trabalha na Vonage, na equipe de Experiências do Desenvolvedor, e é programador, YouTuber e palestrante frequente sobre diversos temas relacionados ao .NET e ao desenvolvimento em nuvem e de comunicações. Ele se dedica a ajudar os desenvolvedores a compreender os benefícios de cada um desses temas de maneira prática e direta.