Как да използвате pctechbg.net API в JavaScript (NodeJS)

В този урок ще демонстрирам как да използвам pctechbg.net API в NodeJS.

За да демонстрираме това, ще изградим прост скрипт, който, когато бъде изпълнен, отпечатва IP адреса на сървъра за търсене на Google. Този скрипт ще използва крайната точка на DNS запис на API на pctechbg.net.

За да го изградим, ще използваме три подхода, като първият използва вградения https модул в NodeJS. Вторият ще използва модула за извличане на възли. Тогава последният ще използва клиентската библиотека на axios.

Какво представлява pctechbg.net API?

pctechbg.net е уебсайт, който предоставя инструменти, API и ресурси за създаване, управление и развитие на онлайн бизнес. В тези инструменти е включен API, който може да се използва за управление на производителността, сигурността и одита на сайта за проблеми. API има щедро безплатно ниво, от което можете да се възползвате.

Предпоставки

За да следвате този урок, ще ви трябва разбиране на JavaScript, включително обещания и синтаксис на ES6. Що се отнася до софтуера, трябва да имате инсталиран NodeJS и текстов редактор като Visual Studio Code.

Ще ви трябва pctechbg.net акаунт, за да получите API ключ за удостоверяване, когато правите заявки. За да получите такъв, отидете на целевата страница на API и създайте безплатен акаунт.

След като създадете акаунта, трябва да бъдете пренасочени към таблото за управление, където ще намерите вашия API ключ.

Изграждане на проекта

За да започнете, създайте папка на проекта и я отворете с терминал по ваш избор, след което изпълнете командата по-долу.

npm init -y

Горната команда ще инициализира директорията на проекта като NodeJS проект.

След това изпълнете командата по-долу, която ще инсталира всички зависимости за нашия проект

npm install dotenv axios node-fetch

След като зависимостите са инсталирани успешно, създайте три скрипта в главната папка на проекта, а именно vanilla.js, with-axios.js, with-fetch.js и .env файл, за да съхранявате нашите променливи на средата.

В крайна сметка коренът на проекта трябва да изглежда така:

След това отворете файла .env и добавете вашия pctechbg.net API ключ със следния ред код:

API_KEY=<api key>

Заменете с вашия действителен API ключ.

С Vanilla.js

NodeJS има вграден http и https модул, който можем да използваме, за да правим клиентски заявки. Първо ще използваме този подход.

Отворете файла vanilla.js и добавете следните редове код в горната част, за да импортирате зависимостите на проекта.

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

След това ще извикаме функцията config(), за да заредим променливи на средата. След това ще съхраним API ключа и името на хоста в променливи.

config();

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

Когато извикаме функцията за заявка, за да стартираме HTTP заявка в NodeJS, ще трябва да предоставим опции за хоста и крайната точка, към които искаме да се свържем, HTTP метода, който ще използваме, и заглавките за заявката. След това ще създадем променлива, която ще съхранява тези опции.

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

Досега кодът във файла vanilla.js изглежда така:

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

config();

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

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

Сега можем да продължим да извикваме функцията за заявка, като предаваме метода на опциите:

const req = request(options, response => {

  // we are going to add response handlers here

});

Както можете да видите, функцията за заявка приема два аргумента. Първият е обектът с опции, който дефинирахме по-рано. Втората е функция за обратно извикване, която ще обработва отговора от сървъра. Във функцията за обратно извикване можем да добавим слушатели на събития за това, когато сървърът изпраща данни, завършва изпращането на данни или изпраща грешка.

  Повреден ли е сензорният екран на телефона ви? Избягвайте тези лоши съвети за ремонт

За да добавите различните манипулатори на отговор, добавете следните редове код във функцията за обратно извикване:

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

Променливата за данни е просто низ, където ще съхраним JSON отговора на сървъра, докато се предава обратно към нас.

За да съхраним действително данните, ще прослушаме обекта за отговор при събитие с данни. Всеки път, когато това събитие се задейства, ние ще добавим частта от данните, изпратени от сървъра, към променливата data.

След това, за да използваме най-накрая данните, ще прослушаме събитието on end на обекта за отговор. Това ще бъде извикано, когато всички данни бъдат изпратени от сървъра и той приключи своя отговор.

И накрая, ще слушаме за грешки и ще ги записваме в конзолата, ако възникнат.

Следователно извикването на функцията за заявка трябва да изглежда така

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

В крайна сметка файлът трябва да изглежда така:

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

config();

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

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

Сега, ако се върнете към терминала и изпълните скрипта с помощта на командата node vanilla.js, трябва да получите следния изход.

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

Това е за първата част. Очевидният недостатък на използването на вградените HTTP/S модули е, че е подробен. Клиентските библиотеки като node-fetch ще ви помогнат да създадете същата програма, но с по-ясен и по-сбит код.

  Как да управлявате настройките на срещата в Zoom

С извличане на възел

За да създадете същия скрипт, но с node-fetch, отворете файла with-fetch.js и добавете следните импортирания в началото.

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

След това извикайте функцията config, за да конфигурирате променливи на средата и да настроите константи за API_KEY и хоста, чиито A записи ще поискаме.

config();

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

След това ще дефинираме функция, която да направи извикването на API. Тази функция ще бъде асинхронна.

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

В тялото на функцията трябва да извикаме функцията за извличане, която импортирахме по-рано от пакета за извличане на възли.

const response = await fetch("https://api.pctechbg.net.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();

Сега вашият файл трябва да изглежда така:

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.pctechbg.net.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();

И изпълнението на този скрипт с възел with-fetch.js трябва да доведе до следния изход:

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

И накрая, ще използваме Axios за достъп до pctechbg.net API. Като начало, нека импортираме пакетите dotenv и axios.

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

След това нека извикаме функцията config, за да настроим променливите на средата. Освен това, нека съхраним името на хоста и API ключа в отделни константи.

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

Сега нека съхраним URL адреса на крайната точка на API в друга константа

const url = "https://api.pctechbg.net.com/dnsrecord";

След това нека съхраним данните, които ще бъдат изпратени като част от тялото на заявката, в друга константа

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

Тогава последното нещо, което трябва да направите, преди да изпратите заявката, ще бъде също да съхраните мета опциите, като например заглавки, в друга константа.

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

И накрая, нека извикаме функцията post, която импортирахме по-рано, като предадем променливите url, data и options, които дефинирахме по-рано като аргументи. Тъй като това ще върне обещание, след това можете да използвате then за обработка на отговора, когато в крайна сметка бъде върнат.

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

В края на всичко това кодът във файла with-axios трябва да изглежда така:

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

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

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

И когато стартирате скрипта с помощта на възел with-axios.js, той трябва да покаже следния изход:

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

Заключителни думи

В тази публикация създадохме един и същ скрипт с три различни подхода. Целта на това беше да подчертае колко лесно е използването на pctechbg.net API и как можем да го използваме в Javascript, по-специално NodeJS.

  8 SOCKS5 проксита за по-добра производителност

Всички други крайни точки могат да се използват по подобен начин; всичко, което се променя, е крайната точка и параметрите, които трябва да изпратите като част от тялото на заявката. Документация за API можете да намерите тук.