Você quer aprender a fazer requisições GET em Node.js? Se sim, você está no lugar certo. Neste post do blog, eu vou mostrar como usar o módulo http embutido e a popular biblioteca axios para fazer requisições GET em Node.js. Eu também vou explicar o que são requisições GET, por que são importantes e como lidar com os dados da resposta. Ao final deste post, você será capaz de fazer requisições GET em Node.js como um profissional.
O que é uma Requisição GET?
Uma requisição GET é um dos tipos mais comuns de requisições HTTP. HTTP significa Protocolo de Transferência de Hipertexto, que é o protocolo padrão para comunicação entre navegadores da web e servidores web. As requisições HTTP são mensagens que os navegadores da web enviam aos servidores web para solicitar ou enviar dados. As respostas HTTP são mensagens que os servidores web enviam de volta aos navegadores da web para entregar os dados solicitados ou confirmar o envio.
Uma requisição GET é um tipo de requisição HTTP que pede ao servidor web para enviar de volta um recurso específico. Por exemplo, quando você digita uma URL no seu navegador, você está fazendo uma requisição GET ao servidor web para que ele envie a página da web associada a essa URL. Uma requisição GET também pode incluir alguns parâmetros de consulta, que são pares chave-valor que fornecem informações adicionais ou filtram o recurso solicitado. Por exemplo, quando você procura algo no Google, está fazendo uma requisição GET ao servidor web do Google com alguns parâmetros de consulta que especificam seu termo de busca, idioma e outras opções.
Por que as Requisições GET são Importantes?
As requisições GET são importantes porque são a maneira primária de recuperar dados dos servidores web. Você pode usar requisições GET para acessar vários tipos de dados, como HTML, JSON, XML, imagens, vídeos e muito mais. Você também pode usar requisições GET para interagir com APIs web, que são interfaces que permitem acessar dados e serviços de outras aplicações web. Por exemplo, você pode usar requisições GET para obter informações sobre o tempo da API OpenWeatherMap, obter informações sobre filmes da API IMDb ou obter imagens de cães da API Dog.
As requisições GET também são importantes porque são fáceis de usar e testar. Você pode fazer requisições GET usando qualquer navegador da web, sem nenhuma ferramenta ou biblioteca especial. Você também pode usar ferramentas como Postman ou Apidog para fazer e testar requisições GET com diferentes parâmetros e cabeçalhos. Você também pode inspecionar os dados da resposta e os cabeçalhos usando as ferramentas de desenvolvedor do navegador ou a interface da ferramenta.
O que é o NodeJs ?
Node.js é um ambiente de execução JavaScript que permite executar código JavaScript fora de um navegador da web. O Node.js é baseado no mecanismo JavaScript V8 do Google Chrome, e é usado para construir aplicações web, especialmente aquelas que são intensivas em dados e em tempo real. O Node.js também possui uma grande biblioteca de módulos e pacotes que você pode usar para adicionar funcionalidades aos seus projetos. Alguns dos benefícios do Node.js são:
- É rápido e escalável, graças à sua natureza assíncrona e orientada a eventos.
- É multiplataforma e de código aberto, o que significa que você pode executá-lo em vários sistemas operacionais e contribuir para seu desenvolvimento.
- É consistente e unificado, pois você pode usar a mesma linguagem tanto para o front-end quanto para o back-end da sua aplicação web.

Como Fazer uma Requisição GET em Node.js Usando o Módulo http?
Node.js é um ambiente de execução JavaScript que permite executar código JavaScript fora do navegador da web. O Node.js é frequentemente usado para criar servidores web, aplicações web e APIs web. O Node.js também fornece um módulo embutido http que permite fazer requisições e respostas HTTP.
Para fazer uma requisição GET em Node.js usando o módulo http, você precisa seguir estes passos:
- Importe o módulo
httpusando a funçãorequire. - Crie um objeto
optionsque contém as informações sobre a requisição GET, como o nome do host, porta, caminho e cabeçalhos. - Use o método
http.getpara fazer a requisição GET, passando o objetooptionscomo o primeiro argumento e uma função de callback como o segundo argumento. A função de callback será executada quando a resposta for recebida, e terá um objetoresponsecomo seu parâmetro. - Use o objeto
responsepara lidar com os dados e cabeçalhos da resposta. O objetoresponseé uma instância da classehttp.IncomingMessage, que implementa a interfaceReadableStream. Isso significa que você pode usar o objetoresponsecomo um fluxo de dados e escutar eventos comodata,endeerror. Você também pode usar a propriedaderesponse.statusCodepara obter o código de status da resposta, e a propriedaderesponse.headerspara obter os cabeçalhos da resposta. - Use o método
response.onpara registrar ouvintes de eventos para o objetoresponse. Por exemplo, você pode usar o métodoresponse.on('data', callback)para escutar o eventodata, que será emitido quando um pedaço de dados for recebido. A função de callback terá um objetochunkcomo seu parâmetro, que é um buffer de dados. Você pode usar o métodochunk.toString()para converter o buffer em uma string e anexá-lo a uma variável para armazenar todos os dados da resposta. Você também pode usar o métodoresponse.on('end', callback)para escutar o eventoend, que será emitido quando a resposta estiver completa. A função de callback não terá parâmetros, e você pode usá-la para realizar ações finais, como registrar ou analisar os dados da resposta. Você também pode usar o métodoresponse.on('error', callback)para escutar o eventoerror, que será emitido quando um erro ocorrer durante a resposta. A função de callback terá um objetoerrorcomo seu parâmetro, e você pode usá-lo para lidar com o erro, como registrá-lo ou lançá-lo.
Aqui está um exemplo de como fazer uma requisição GET em Node.js usando o módulo http:
// Importar o módulo http
const http = require('http');
// Criar um objeto options
const options = {
hostname: 'api.openweathermap.org',
port: 80,
path: '/data/2.5/weather?q=Los%20Angeles&appid=YOUR_API_KEY',
headers: {
'User-Agent': 'Node.js'
}
};
// Fazer a requisição GET
http.get(options, (response) => {
// Inicializar uma variável para armazenar os dados da resposta
let data = '';
// Escutar o evento de dados
response.on('data', (chunk) => {
// Anexar o pedaço à variável de dados
data += chunk.toString();
});
// Escutar o evento de finalização
response.on('end', () => {
// Registrar o código de status e os cabeçalhos
console.log(`Código de status: ${response.statusCode}`);
console.log(`Cabeçalhos: ${JSON.stringify(response.headers)}`);
// Analisar os dados como JSON
const weather = JSON.parse(data);
// Registrar as informações do tempo
console.log(`Cidade: ${weather.name}`);
console.log(`Temperatura: ${weather.main.temp}`);
console.log(`Descrição: ${weather.weather[0].description}`);
});
// Escutar o evento de erro
response.on('error', (error) => {
// Lançar o erro
throw error;
});
});
Como Fazer uma Requisição GET em Node.js Usando a Biblioteca axios?
O módulo http é um módulo de baixo nível que fornece funcionalidade básica para fazer requisições e respostas HTTP. No entanto, se você quiser usar um módulo de nível mais alto e mais amigável, pode usar a biblioteca axios. Axios é uma biblioteca popular e poderosa que permite fazer requisições HTTP e lidar com respostas usando promessas e sintaxe async/await. O Axios também suporta recursos como interceptores, transformadores, timeouts, tokens de cancelamento e mais.
Para fazer uma requisição GET em Node.js usando a biblioteca axios, você precisa seguir estes passos:
- Instale a biblioteca
axiosusando o comandonpm:npm install axios. - Importe a biblioteca
axiosusando a funçãorequire. - Use o método
axios.getpara fazer a requisição GET, passando a URL do recurso como o primeiro argumento e um objetoconfigopcional como o segundo argumento. O objetoconfigpode conter informações sobre a requisição GET, como os cabeçalhos, parâmetros, timeout e mais. O métodoaxios.getretornará uma promessa, que será resolvida para um objetoresponseou rejeitada para um objetoerror. - Use o método
thenpara lidar com a promessa resolvida, passando uma função de callback como o primeiro argumento. A função de callback terá um objetoresponsecomo seu parâmetro, que contém os dados da resposta, status, cabeçalhos e mais. Você pode usar a propriedaderesponse.datapara acessar os dados da resposta e a propriedaderesponse.statuspara acessar o código de status da resposta. Você também pode usar o métodocatchpara lidar com a promessa rejeitada, passando uma função de callback como o primeiro argumento. A função de callback terá um objetoerrorcomo seu parâmetro, que contém a mensagem de erro, código, requisição e resposta. Você pode usar a propriedadeerror.responsepara acessar o objeto de resposta e a propriedadeerror.requestpara acessar o objeto de requisição. - Alternativamente, você pode usar a sintaxe
async/awaitpara fazer a requisição GET e lidar com a resposta. Para fazer isso, você precisa usar a palavra-chaveasyncantes da função que contém a requisição GET e a palavra-chaveawaitantes do métodoaxios.get. Isso permitirá que você escreva código assíncrono de forma síncrona e atribua o objetoresponsea uma variável. Você pode então usar o blocotry/catchpara lidar com quaisquer erros que possam ocorrer durante a requisição GET.
Aqui está um exemplo de como fazer uma requisição GET em Node.js usando a biblioteca axios:
// Importar a biblioteca axios
const axios = require('axios');
// Fazer a requisição GET usando o método then
axios.get('http://api.openweathermap.org/data/2.5/weather?q=Los%20Angeles&appid=YOUR_API_KEY', {
headers: {
'User-Agent': 'Node.js'
}
}).then((response) => {
// Registrar o código de status e os cabeçalhos
console.log(`Código de status: ${response.status}`);
console.log(`Cabeçalhos: ${JSON.stringify(response.headers)}`);
// Registrar as informações do tempo
console.log(`Cidade: ${response.data.name}`);
console.log(`Temperatura: ${response.data.main.temp}`);
console.log(`Descrição: ${response.data.weather[0].description}`);
}).catch((error) => {
// Registrar a mensagem de erro e o código
console.log(`Mensagem de erro: ${error.message}`);
console.log(`Código de erro: ${error.code}`);
// Registrar o status e os dados da resposta se disponíveis
if (error.response) {
console.log(`Status da resposta: ${error.response.status}`);
console.log(`Dados da resposta: ${JSON.stringify(error.response.data)}`);
}
// Registrar o método e o caminho da requisição se disponíveis
if (error.request) {
console.log(`Método da requisição: ${error.request.method}`);
console.log(`Caminho da requisição: ${error.request.path}`);
}
});
// Fazer a requisição GET usando a sintaxe async/await
async function getWeather() {
try {
// Aguardar a requisição GET e atribuir o objeto de resposta a uma variável
const response = await axios.get('http://api.openweathermap.org/data/2.5/weather?q=Los%20Angeles&appid=YOUR_API_KEY', {
headers: {
'User-Agent': 'Node.js'
}
});
// Registrar o código de status e os cabeçalhos
console.log(`Código de status: ${response.status}`);
console.log(`Cabeçalhos: ${JSON.stringify(response.headers)}`);
// Registrar as informações do tempo
console.log(`Cidade: ${response.data.name}`);
console.log(`Temperatura: ${response.data.main.temp}`);
console.log(`Descrição: ${response.data.weather[0].description}`);
} catch (error) {
// Registrar a mensagem de erro e o código
console.log(`Mensagem de erro: ${error.message}`);
console.log(`Código de erro: ${error.code}`);
// Registrar o status e os dados da resposta se disponíveis
if (error.response) {
console.log(`Status da resposta: ${error.response.status}`);
console.log(`Dados da resposta: ${JSON.stringify(error.response.data)}`);
}
// Registrar o método e o caminho da requisição se disponíveis
if (error.request) {
console.log(`Método da requisição: ${error.request.method}`);
console.log(`Caminho da requisição: ${error.request.path}`);
}
}
}
// Chamar a função getWeather
getWeather();
Como Lidar com os Dados da Resposta em Node.js?
Assim que você faz uma requisição GET em Node.js e recebe a resposta, pode querer fazer algo com os dados da resposta. Por exemplo, você pode querer exibir os dados no console, salvar os dados em um arquivo, analisar os dados como JSON ou XML, ou usar os dados para algum outro propósito.
Dependendo do tipo e formato dos dados da resposta, você pode precisar usar diferentes métodos e módulos para lidar com os dados. Aqui estão alguns cenários comuns e como lidar com eles:
- Se os dados da resposta forem uma string, você pode simplesmente usar o método
console.logpara exibir os dados no console, ou o métodofs.writeFilepara salvar os dados em um arquivo. O módulofsé um módulo embutido que permite trabalhar com o sistema de arquivos em Node.js. Você pode importar o módulofsusando a funçãorequire, e usar o métodofs.writeFilepara gravar dados em um arquivo, passando o nome do arquivo, os dados e uma função de callback como argumentos. A função de callback terá um objetoerrorcomo seu parâmetro, e você pode usá-lo para lidar com quaisquer erros que possam ocorrer durante o processo de gravação do arquivo. - Se os dados da resposta forem um buffer, você pode usar o método
buffer.toStringpara converter o buffer em uma string e, em seguida, usar os mesmos métodos mencionados acima para exibir ou salvar os dados. Um buffer é um tipo de dado binário que representa uma sequência de bytes. Buffers são frequentemente usados para lidar com dados binários, como imagens, vídeos ou arquivos compactados. Você pode usar o métodobuffer.toStringpara converter um buffer em uma string, passando um argumento de codificação opcional para especificar a codificação de caractere da string. A codificação padrão éutf8, que é a codificação mais comum para dados de texto. - Se os dados da resposta forem JSON, você pode usar o método
JSON.parsepara analisar os dados como um objeto JavaScript e, em seguida, usar as propriedades e métodos do objeto para acessar e manipular os dados. JSON significa Notação de Objetos JavaScript, que é um formato padrão para troca e armazenamento de dados. Os dados JSON são uma string que segue uma sintaxe específica, que consiste em pares chave-valor entre chaves, e arrays entre colchetes. Você pode usar o métodoJSON.parsepara analisar uma string JSON como um objeto JavaScript, passando a string JSON como o argumento. O método retornará um objeto JavaScript que você pode usar como qualquer outro objeto. - Se os dados da resposta forem XML, você pode usar a biblioteca
xml2jspara analisar os dados como um objeto JavaScript e, em seguida, usar as propriedades e métodos do objeto para acessar e manipular os dados. XML significa Linguagem de Marcação Extensível, que é outro formato padrão para troca e armazenamento de dados. Os dados XML são uma string que segue uma sintaxe específica, que consiste em elementos entre tags, atributos entre aspas e conteúdo de texto. A bibliotecaxml2jsé uma biblioteca de terceiros que permite converter dados XML em objetos JavaScript e vice-versa. Você pode instalar a bibliotecaxml2jsusando o comandonpm:npm install xml2js. Você pode importar a bibliotecaxml2jsusando a funçãorequire, e usar o métodoxml2js.parseStringpara analisar uma string XML como um objeto JavaScript, passando a string XML e uma função de callback como argumentos. A função de callback terá um objetoerrore um objetoresultcomo seus parâmetros, e você pode usá-los para lidar com quaisquer erros ou acessar o objeto analisado.
Como Testar a Requisição HTTP GET do NodeJs Usando Apidog?
Para testar a requisição HTTP GET usando Apidog, você precisa seguir estes passos simples:
- Abra o Apidog e clique no botão "Nova Requisição" para criar uma nova requisição.

2. Selecione "GET" como o método da requisição.

3. Insira a URL do endpoint da API

Então clique no botão “Enviar” para enviar a requisição para a API.

Como você pode ver, o Apidog mostra a você a URL, parâmetros, cabeçalhos e corpo da requisição, e o status, cabeçalhos e corpo da resposta. Você também pode ver o tempo de resposta, tamanho e formato da requisição e resposta, e compará-los com diferentes APIs web.
Conclusão
Neste post do blog, eu mostrei como fazer requisições GET em Node.js usando o módulo http e a biblioteca axios. Eu também mostrei como lidar com os dados da resposta em diferentes formatos e cenários. Espero que você tenha aprendido algo útil e gostado de ler este post.
Obrigado por ler e boas codificações!



