03/28/2024

Cum să utilizați API-ul tipstrick.ro DNS Lookup în JavaScript (NodeJS)

În acest tutorial, voi demonstra cum să utilizați API-ul tipstrick.ro în NodeJS pentru a verifica înregistrările DNS ale oricărui domeniu.

Vom construi un script simplu care, atunci când este executat, imprimă adresa IP a serverului de căutare Google.

Acest script va folosi API-ul tipstrick.ro DNS Lookup.

Pentru a-l construi, vom folosi trei abordări, prima utilizează modulul https încorporat în NodeJS. Al doilea va folosi modulul node-fetch. Apoi, ultimul va folosi biblioteca client axios.

Ce este API-ul tipstrick.ro?

API-ul tipstrick.ro oferă seturi de API-uri REST pentru testarea performanței site-ului web, a DNS-ului și a valorilor de securitate. Puteți face lucruri precum să faceți o captură de ecran, să generați PDF-uri, să faceți web scraping, scanare porturi și multe altele.

Cerințe preliminare

Pentru a urma acest tutorial, veți avea nevoie de înțelegerea JavaScript, inclusiv promisiunile și sintaxa ES6. În ceea ce privește software-ul, ar trebui să aveți instalat NodeJS și un editor de text, cum ar fi Visual Studio Code.

Veți avea nevoie de un cont tipstrick.ro pentru a obține o cheie API pentru autentificare atunci când faceți solicitări. Pentru a obține unul, accesați pagina de destinație API și creați un cont gratuit.

După ce creați contul, ar trebui să fiți redirecționat către tabloul de bord, unde veți găsi cheia dvs. API.

Construirea proiectului

Pentru a începe, creați un folder de proiect și deschideți-l cu un terminal la alegere, apoi rulați comanda de mai jos.

npm init -y

Comanda de mai sus va inițializa directorul proiectului ca proiect NodeJS.

Apoi, rulați comanda de mai jos, care va instala toate dependențele pentru proiectul nostru

npm install dotenv axios node-fetch

După ce dependențele au fost instalate cu succes, creați trei scripturi în folderul rădăcină al proiectului și anume vanilla.js, with-axios.js, with-fetch.js și un fișier .env pentru a stoca variabilele noastre de mediu.

În cele din urmă, rădăcina proiectului ar trebui să arate astfel:

Apoi, deschideți fișierul .env și adăugați cheia API tipstrick.ro cu următoarea linie de cod:

API_KEY=<api key>

Înlocuiți cu cheia dvs. API reală.

Vanilla.js

NodeJS are un modul http și https încorporat pe care îl putem folosi pentru a face solicitări clienților. Vom folosi mai întâi această abordare.

Deschideți fișierul vanilla.js și adăugați următoarele linii de cod în partea de sus pentru a importa dependențele proiectului.

import { request } from "https";
import { config } from "dotenv";

În continuare, vom apela funcția config() pentru a încărca variabilele de mediu. Apoi vom stoca cheia API și numele de gazdă în variabile.

config();

const apiKey = process.env.API_KEY;
const host="google.com";

Când apelăm funcția de solicitare pentru a porni o solicitare HTTP în NodeJS, va trebui să furnizăm opțiuni pentru gazda și punctul final la care dorim să ne conectăm, metoda HTTP pe care o vom folosi și anteturile cererii. Deci, în continuare, vom crea o variabilă care va stoca aceste opțiuni.

const options = {
  hostname: "api.tipstrick.ro.com",
  path: "/dnsrecord",
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-api-key": apiKey,
  },
};

Până acum, codul din fișierul vanilla.js arată astfel:

import { request } from "https";
import { config } from "dotenv";

config();

const apiKey = process.env.API_KEY;
const host="google.com"

const options = {
  hostname: "api.tipstrick.ro.com",
  path: "/dnsrecord",
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-api-key": apiKey,
  },
};

Acum putem trece la apelarea funcției de solicitare trecând metoda opțiunilor:

const req = request(options, response => {

  // we are going to add response handlers here

});

După cum puteți vedea, funcția de solicitare preia două argumente. Primul este obiectul opțiuni pe care l-am definit mai devreme. A doua este o funcție de apel invers care se va ocupa de răspunsul de la server. În cadrul funcției de apel invers, putem adăuga ascultători de evenimente pentru când serverul trimite date, termină trimiterea datelor sau trimite o eroare.

  Duelul dintre cele mai importante limbaje de codare

Pentru a adăuga diferiți handler de răspuns, adăugați următoarele linii de cod în cadrul funcției de apel invers:

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);
});

Variabila de date este pur și simplu un șir în care vom stoca răspunsul JSON al serverului pe măsură ce ne este transmis înapoi.

Pentru a stoca efectiv datele, vom asculta evenimentul de date al obiectului răspuns. Ori de câte ori acest eveniment este declanșat, vom adăuga o bucată de date trimisă de server la variabila de date.

Apoi, pentru a folosi în sfârșit datele, vom asculta evenimentul final de pe obiectul răspuns. Acesta va fi apelat atunci când toate datele au fost trimise de pe server și acesta și-a încheiat răspunsul.

În cele din urmă, vom asculta erorile și le vom înregistra în consolă dacă apar.

Prin urmare, apelul la funcția de solicitare ar trebui să arate așa

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);
  });

});

În cele din urmă, trebuie să scriem câteva date în corpul solicitării și să încheiem cererea.

req.write(JSON.stringify({ url: host, types: ["A"] }));
req.end();

La final, fișierul ar trebui să arate astfel:

import { request } from "https";
import { config } from "dotenv";

config();

const apiKey = process.env.API_KEY;
const host="google.com"

const options = {
  hostname: "api.tipstrick.ro.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();

Acum, dacă reveniți la terminal și rulați scriptul folosind comanda node vanilla.js, ar trebui să obțineți următoarea ieșire.

[
  { 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 }
]

Asta e pentru prima parte. Dezavantajul evident al folosirii modulelor HTTP/S încorporate este acela că este verbos. Bibliotecile client, cum ar fi node-fetch, vă vor ajuta să creați același program, dar cu un cod mai clar și mai concis.

  Cum să schimbați automat chipul Apple Watch în funcție de timp sau locație

nod-fetch

Pentru a crea același script, dar cu node-fetch, deschideți fișierul with-fetch.js și adăugați următoarele importuri în partea de sus.

import fetch from "node-fetch";
import { config } from "dotenv";

Apoi apelați funcția de configurare pentru a configura variabilele de mediu și pentru a configura constante pentru API_KEY și gazda ale cărei înregistrări A le vom solicita.

config();

const apiKey = process.env.API_KEY;
const host="google.com"

În continuare, vom defini o funcție pentru a efectua apelul API. Această funcție va fi asincronă.

async function request() {
  // The function body will go here
}

În corpul funcției, trebuie să apelăm funcția fetch pe care am importat-o ​​mai devreme din pachetul node-fetch.

const response = await fetch("https://api.tipstrick.ro.com/dnsrecord", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "x-api-key": apiKey,
    },
    body: JSON.stringify({ url: host, types: ["A"] }),
});

Apoi, după apelul la funcția de preluare, am dori să analizăm răspunsul nostru și să gestionăm orice erori care pot apărea.

if (response.ok) {
    const { data } = await response.json();

    console.log(data.A);
  } else {
    console.log(response);
  }

În acest moment, adăugați un apel la funcție după solicitarea acesteia.

request();

Fișierul dvs. ar trebui să arate acum astfel:

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.tipstrick.ro.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();

Și rularea acelui script cu nodul with-fetch.js ar trebui să producă următoarea ieșire:

[
  { 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 }
]

Axios

În cele din urmă, vom folosi Axios pentru a accesa API-ul tipstrick.ro. Pentru început, să importăm pachetele dotenv și axios.

import axios from "axios";
import { config } from "dotenv";

Apoi, să apelăm funcția de configurare pentru a configura variabilele de mediu. În plus, să stocăm numele gazdei și cheia API în constante separate.

const host = "google.com";
const key = process.env.API_KEY;

Acum, să stocăm adresa URL a punctului final API într-o altă constantă

const url = "https://api.tipstrick.ro.com/dnsrecord";

Apoi, să stocăm datele care vor fi trimise ca parte a corpului cererii într-o altă constantă

const data = { url: host, types: ["A"] };

Apoi, ultimul lucru de făcut înainte de a trimite cererea va fi să stocați și opțiunile meta, cum ar fi anteturile, într-o altă constantă.

const options = {
  headers: {
    "Content-Type": "application/json",
    "x-api-key": key,
  },
};

În cele din urmă, să apelăm la funcția de post pe care am importat-o ​​mai devreme, trecând URL-ul, datele și variabilele de opțiuni pe care le-am definit mai devreme ca argumente. Deoarece aceasta va returna o promisiune, puteți utiliza apoi pentru a gestiona răspunsul atunci când acesta este în cele din urmă returnat.

axios.post(url, data, options).then(({ data }) => {
  console.log(data.data.A);
});

La sfârșitul tuturor acestora, codul din fișierul with-axios ar trebui să arate astfel:

import axios from "axios";
import { config } from "dotenv";

config();
const host = "google.com";
const key = process.env.API_KEY;

const url = "https://api.tipstrick.ro.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);
});

Și când rulați scriptul folosind nodul with-axios.js, ar trebui să afișeze următoarea ieșire:

[
  { 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 }
]

Cuvinte finale

În această postare, am creat scenariul cu trei abordări diferite. Obiectivul acestui lucru a fost de a evidenția cât de ușoară este utilizarea API-ului tipstrick.ro și cum am putea să o folosim în Javascript, în special NodeJS.

  Cele mai bune rucsacuri pentru studenți cu laptopuri

Explorați documentația API-ului tipstrick.ro pentru mai multe.

x