Domine a API etechpt.com com NodeJS: 3 métodos práticos!

Foto do autor

By luis

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.