Utilizando a API etechpt.com com NodeJS: Um Guia Prático
Neste tutorial, exploraremos como interagir com a API da etechpt.com usando NodeJS. Nosso objetivo será criar um script que, ao ser executado, revele o endereço IP do servidor de busca do Google. Para isso, empregaremos o endpoint de consulta DNS da API etechpt.com.
A demonstração será feita através de três métodos distintos: primeiramente, utilizaremos o módulo https
nativo do NodeJS. Em seguida, empregaremos o módulo node-fetch
e, por fim, a biblioteca cliente axios
.
O que é a API etechpt.com?
A etechpt.com é uma plataforma que oferece um conjunto de ferramentas, APIs e recursos valiosos para a construção, gerenciamento e expansão de negócios online. Dentre esses recursos, destaca-se uma API que permite monitorar o desempenho, a segurança e a integridade de sites. A API oferece um plano gratuito generoso, acessível a todos os usuários.
Pré-requisitos
Para acompanhar este guia, é necessário ter um conhecimento básico de JavaScript, incluindo o uso de Promises e a sintaxe ES6. Além disso, você precisará ter o NodeJS instalado em seu computador, juntamente com um editor de código como o Visual Studio Code.
É imprescindível possuir uma conta na etechpt.com para obter uma chave de API, que será utilizada para autenticação em todas as requisições. Para criar sua conta gratuita, acesse a página da API e siga as instruções.
Após a criação da conta, você será redirecionado para o painel de controle, onde encontrará sua chave de API.
Configurando o Projeto
Comece criando uma nova pasta para o seu projeto e abra-a em um terminal de sua preferência. Em seguida, execute o comando abaixo para inicializar o projeto:
npm init -y
Este comando transformará a pasta em um projeto NodeJS.
Agora, instale as dependências necessárias para o projeto:
npm install dotenv axios node-fetch
Após a instalação bem-sucedida das dependências, crie três arquivos JavaScript na raiz do projeto: vanilla.js
, with-axios.js
e with-fetch.js
, juntamente com um arquivo .env
para armazenar as variáveis de ambiente.
A estrutura final do seu projeto deve ser similar a esta:
Em seguida, abra o arquivo .env
e adicione sua chave de API etechpt.com, conforme o exemplo abaixo:
API_KEY=<sua_chave_api>
Não se esqueça de substituir <sua_chave_api>
pela sua chave de API real.
Utilizando o Módulo https
Nativo (vanilla.js)
O NodeJS possui módulos embutidos para realizar requisições HTTP e HTTPS. Vamos começar utilizando o módulo https
para construir nosso script.
Abra o arquivo vanilla.js
e insira as seguintes linhas de código no início para importar as dependências:
import { request } from "https";
import { config } from "dotenv";
Agora, vamos carregar as variáveis de ambiente com a função config()
e armazenar a chave de API e o nome do host em variáveis:
config();
const apiKey = process.env.API_KEY;
const host="google.com";
Ao utilizar a função request
do NodeJS, é necessário fornecer algumas opções, como o host e o endpoint a serem acessados, o método HTTP a ser utilizado e os cabeçalhos da requisição. Vamos criar um objeto para armazenar essas opções:
const options = {
hostname: "api.etechpt.com.com",
path: "/dnsrecord",
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": apiKey,
},
};
Até este ponto, o conteúdo do arquivo vanilla.js
será similar a este:
import { request } from "https";
import { config } from "dotenv";
config();
const apiKey = process.env.API_KEY;
const host="google.com"
const options = {
hostname: "api.etechpt.com.com",
path: "/dnsrecord",
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": apiKey,
},
};
Agora, podemos utilizar a função request
, passando o objeto options
:
const req = request(options, response => {
// Manipuladores de resposta serão adicionados aqui
});
Como podemos ver, a função request
recebe dois argumentos. O primeiro é o objeto de opções que acabamos de definir. O segundo é uma função de callback que será responsável por tratar a resposta do servidor. Dentro desta função, podemos adicionar listeners de eventos para capturar dados, o término do envio de dados e possíveis erros.
Adicione os seguintes listeners dentro da função de callback:
let data = "";
response.on("data", chunk => {
data += chunk;
});
response.on("end", () => {
console.log(JSON.parse(data).data.A);
});
response.on("error", error => {
console.log(error);
});
A variável data
é uma string que irá armazenar a resposta JSON do servidor. Para adicionar os dados, utilizamos o listener de evento "data"
do objeto response
, que anexa os dados recebidos do servidor à variável data
.
Para finalmente utilizarmos os dados, precisamos do listener de evento "end"
, que é chamado quando o servidor envia todos os dados. Além disso, escutamos o evento "error"
para logar possíveis erros.
Portanto, a chamada para a função de solicitação deve ser assim:
const req = request(options, response => {
let data = "";
response.on("data", chunk => {
data += chunk;
});
response.on("end", () => {
console.log(JSON.parse(data).data.A);
});
response.on("error", error => {
console.log(error);
});
});
Por fim, precisamos enviar dados no corpo da requisição e finalizar a requisição:
req.write(JSON.stringify({ url: host, types: ["A"] }));
req.end();
O código completo do arquivo vanilla.js
deve ser semelhante a este:
import { request } from "https";
import { config } from "dotenv";
config();
const apiKey = process.env.API_KEY;
const host="google.com"
const options = {
hostname: "api.etechpt.com.com",
path: "/dnsrecord",
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": apiKey,
},
};
const req = request(options, response => {
let data = "";
response.on("data", chunk => {
data += chunk;
});
response.on("end", () => {
console.log(JSON.parse(data).data.A);
});
response.on("error", error => {
console.log(error);
});
});
req.write(JSON.stringify({ url: host, types: ["A"] }));
req.end();
Agora, ao executar o script no terminal com o comando node vanilla.js
, você deverá ver a seguinte saída:
[
{ address: '172.253.122.101', ttl: 247 },
{ address: '172.253.122.113', ttl: 247 },
{ address: '172.253.122.100', ttl: 247 },
{ address: '172.253.122.102', ttl: 247 },
{ address: '172.253.122.138', ttl: 247 },
{ address: '172.253.122.139', ttl: 247 }
]
Esta foi a primeira parte, usando o módulo https
nativo do NodeJS. Uma desvantagem desse método é o seu nível de detalhamento. Bibliotecas como o node-fetch
podem simplificar este processo.
Utilizando node-fetch
(with-fetch.js)
Para criar o mesmo script utilizando o node-fetch
, abra o arquivo with-fetch.js
e importe as seguintes dependências:
import fetch from "node-fetch";
import { config } from "dotenv";
Em seguida, utilize a função config
para carregar as variáveis de ambiente e defina constantes para a chave de API e o host:
config();
const apiKey = process.env.API_KEY;
const host="google.com"
Vamos definir uma função assíncrona para realizar a chamada à API:
async function request() {
// O corpo da função estará aqui
}
Dentro do corpo da função, utilize a função fetch
, que foi importada do pacote node-fetch
:
const response = await fetch("https://api.etechpt.com.com/dnsrecord", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": apiKey,
},
body: JSON.stringify({ url: host, types: ["A"] }),
});
Após a chamada à função fetch
, analise a resposta e trate possíveis erros:
if (response.ok) {
const { data } = await response.json();
console.log(data.A);
} else {
console.log(response);
}
Finalmente, chame a função request
:
request();
O arquivo with-fetch.js
completo deve ser similar a este:
import fetch from "node-fetch";
import { config } from "dotenv";
config();
const apiKey = process.env.API_KEY;
const host = "google.com";
async function request() {
const response = await fetch("https://api.etechpt.com.com/dnsrecord", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": apiKey,
},
body: JSON.stringify({ url: host, types: ["A"] }),
});
if (response.ok) {
const { data } = await response.json();
console.log(data.A);
} else {
console.log(response);
}
}
request();
Ao executar este script com o comando node with-fetch.js
, você deverá obter a seguinte saída:
[
{ address: '172.253.122.113', ttl: 134 },
{ address: '172.253.122.138', ttl: 134 },
{ address: '172.253.122.100', ttl: 134 },
{ address: '172.253.122.139', ttl: 134 },
{ address: '172.253.122.102', ttl: 134 },
{ address: '172.253.122.101', ttl: 134 }
]
Utilizando axios
(with-axios.js)
Por último, vamos utilizar o axios
para acessar a API etechpt.com. Importe as dependências:
import axios from "axios";
import { config } from "dotenv";
Em seguida, utilize a função config
para configurar as variáveis de ambiente e armazene o nome do host e a chave de API em constantes separadas:
const host = "google.com";
const key = process.env.API_KEY;
Defina a URL do endpoint da API em outra constante:
const url = "https://api.etechpt.com.com/dnsrecord";
Armazene os dados que serão enviados no corpo da requisição em outra constante:
const data = { url: host, types: ["A"] };
E por último, armazene as opções meta, como cabeçalhos, em outra constante:
const options = {
headers: {
"Content-Type": "application/json",
"x-api-key": key,
},
};
Finalmente, utilize a função post
do axios
, passando a URL, os dados e as opções como argumentos. Utilize o .then()
para lidar com a resposta:
axios.post(url, data, options).then(({ data }) => {
console.log(data.data.A);
});
O código final do arquivo with-axios.js
deve ser similar a este:
import axios from "axios";
import { config } from "dotenv";
config();
const host = "google.com";
const key = process.env.API_KEY;
const url = "https://api.etechpt.com.com/dnsrecord";
const data = { url: host, types: ["A"] };
const options = {
headers: {
"Content-Type": "application/json",
"x-api-key": key,
},
};
axios.post(url, data, options).then(({ data }) => {
console.log(data.data.A);
});
Ao executar este script com o comando node with-axios.js
, você deverá ver a seguinte saída:
[
{ address: '142.251.163.138', ttl: 60 },
{ address: '142.251.163.113', ttl: 60 },
{ address: '142.251.163.100', ttl: 60 },
{ address: '142.251.163.101', ttl: 60 },
{ address: '142.251.163.102', ttl: 60 },
{ address: '142.251.163.139', ttl: 60 }
]
Considerações Finais
Neste artigo, exploramos três abordagens diferentes para construir o mesmo script, demonstrando a facilidade de uso da API etechpt.com com JavaScript, especialmente em um ambiente NodeJS.
Todos os outros endpoints da API podem ser utilizados de maneira semelhante, alterando apenas o endpoint e os parâmetros a serem enviados no corpo da requisição. A documentação completa da API pode ser consultada aqui.