A etoppc.com API használata JavaScriptben (NodeJS)

Ebben az oktatóanyagban bemutatom, hogyan kell használni a etoppc.com API-t a NodeJS-ben.

Ennek demonstrálására egy egyszerű szkriptet fogunk készíteni, amely végrehajtáskor kiírja a Google keresőszerverének IP-címét. Ez a szkript a etoppc.com API DNS-rekord végpontját fogja használni.

Ennek elkészítéséhez három megközelítést fogunk használni, az első a NodeJS beépített https modulját használja. A második a node-fetch modult fogja használni. Ezután az utolsó az axios kliens könyvtárat fogja használni.

Mi az a etoppc.com API?

A etoppc.com egy olyan webhely, amely eszközöket, API-kat és erőforrásokat biztosít egy online vállalkozás létrehozásához, kezeléséhez és bővítéséhez. Ezek az eszközök tartalmaznak egy API-t, amely felhasználható a webhely teljesítményének, biztonságának és webhelyproblémák ellenőrzésének kezelésére. Az API bőséges ingyenes szinttel rendelkezik, amelyet kihasználhat.

Előfeltételek

Az oktatóanyag követéséhez ismernie kell a JavaScriptet, beleértve az ígéreteket és az ES6 szintaxisát. Ami a szoftvert illeti, telepítenie kell a NodeJS-t és egy szövegszerkesztőt, például a Visual Studio Code-ot.

Szüksége lesz egy etoppc.com-fiókra, hogy API-kulcsot kapjon a hitelesítéshez kérések benyújtásakor. Ha szeretne egyet, menjen az API céloldalára, és hozzon létre egy ingyenes fiókot.

A fiók létrehozása után át kell irányítani az irányítópultra, ahol megtalálja az API-kulcsot.

A projekt felépítése

Kezdésként hozzon létre egy projektmappát, nyissa meg egy választott terminállal, majd futtassa az alábbi parancsot.

npm init -y

A fenti parancs NodeJS-projektként inicializálja a projektkönyvtárat.

Ezután futtassa az alábbi parancsot, amely telepíti a projektünk összes függőségét

npm install dotenv axios node-fetch

A függőségek sikeres telepítése után hozzon létre három szkriptet a projekt gyökérmappájában: vanilla.js, with-axios.js, with-fetch.js és egy .env fájl a környezeti változóink tárolására.

Végül a projektgyökérnek így kell kinéznie:

Ezután nyissa meg az .env fájlt, és adja hozzá a etoppc.com API-kulcsot a következő kódsorral:

API_KEY=<api key>

Cserélje ki az a tényleges API-kulcsra.

A Vanilla.js-szel

A NodeJS rendelkezik egy beépített http és https modullal, amellyel kliens kéréseket tudunk küldeni. Először ezt a megközelítést fogjuk alkalmazni.

Nyissa meg a vanilla.js fájlt, és adja hozzá a következő kódsorokat a tetején a projekt függőségei importálásához.

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

Ezután a config() függvényt hívjuk meg a környezeti változók betöltéséhez. Ezután az API-kulcsot és a gazdagépnevet változókban tároljuk.

config();

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

Amikor meghívjuk a kérés függvényt HTTP-kérés indításához a NodeJS-ben, akkor meg kell adnunk a kapcsolódni kívánt gazdagéphez és végponthoz, a használni kívánt HTTP-módszerhez és a kérés fejlécéhez. Tehát ezután létrehozunk egy változót, amely ezeket az opciókat tárolja.

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

Eddig így néz ki a vanilla.js fájl kódja:

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

config();

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

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

Most folytathatjuk a kérés függvény meghívását az opciók metódusban:

const req = request(options, response => {

  // we are going to add response handlers here

});

Mint látható, a kérés függvény két argumentumot vesz fel. Az első a korábban definiált opciók objektum. A második egy visszahívási funkció, amely kezeli a szerver válaszát. A visszahívási funkción belül eseményfigyelőket adhatunk hozzá, amikor a szerver adatokat küld, befejezi az adatküldést vagy hibát küld.

  Fájlok, mappák és képernyőképek megosztása egy kattintással

A különböző válaszkezelők hozzáadásához adja hozzá a következő kódsorokat a visszahívási függvényen belül:

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

Az adatváltozó egyszerűen egy karakterlánc, amelyben a szerver JSON-válaszát fogjuk tárolni, ahogy azt visszaküldik nekünk.

Az adatok tényleges tárolásához meg fogjuk hallgatni a válaszobjektum adateseményét. Amikor ez az esemény elindul, a szerver által küldött adattömeget hozzáfűzzük az adatváltozóhoz.

Ezután az adatok végső felhasználásához meghallgatjuk a válaszobjektum on end eseményét. Ezt akkor hívják meg, ha a szerver minden adatot elküld, és a válasz befejeződött.

Végül figyelni fogjuk a hibákat, és naplózzuk őket a konzolon, ha felmerülnek.

Ezért a kérés függvény hívásának így kell kinéznie

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

});

Végül írnunk kell néhány adatot a kérés törzsébe, és le kell zárnunk a kérést.

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

Végül a fájlnak így kell kinéznie:

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

config();

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

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

Most, ha visszatér a terminálhoz, és futtatja a szkriptet a node vanilla.js paranccsal, a következő kimenetet kell kapnia.

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

Az első részről ennyi. A beépített HTTP/S modulok használatának nyilvánvaló hátránya, hogy bőbeszédű. Az ügyfélkönyvtárak, mint például a node-fetch, segítenek létrehozni ugyanazt a programot, de világosabb és tömörebb kóddal.

  Szöveg, hivatkozások és fényképek másolása és beillesztése Androidon

Node-fetch-el

Ugyanennek a szkriptnek a node-fetch használatával történő létrehozásához nyissa meg a with-fetch.js fájlt, és adja hozzá a következő importálásokat a tetejére.

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

Ezután hívja meg a config függvényt a környezeti változók konfigurálásához, és állítson be konstansokat az API_KEY és a gazdagép számára, amelynek A rekordjait kérni fogjuk.

config();

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

Ezután definiálunk egy függvényt az API-hívás kezdeményezéséhez. Ez a funkció aszinkron lesz.

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

A függvény törzsén belül meg kell hívnunk a lekérési függvényt, amelyet korábban importáltunk a node-fetch csomagból.

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

Ezután a fetch függvény hívása után szeretnénk elemezni a válaszunkat, és kezelni az esetlegesen felmerülő hibákat.

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

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

Ezen a ponton adjon hozzá egy hívást a függvényhez a kérése után.

request();

A fájlnak most így kell kinéznie:

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

És a szkript futtatása a node with-fetch.js-szel a következő kimenetet adja:

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

Axiosszal

Végül az Axiost fogjuk használni a etoppc.com API eléréséhez. Kezdésként importáljuk a dotenv és axios csomagokat.

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

Ezután hívjuk meg a config függvényt a környezeti változók beállításához. Ezenkívül tároljuk a gazdagép nevét és az API-kulcsot külön konstansokban.

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

Most tároljuk az API-végpont URL-jét egy másik állandóban

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

Ezután tároljuk a kéréstörzs részeként elküldött adatokat egy másik állandóban

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

Ezután az utolsó teendő a kérés elküldése előtt az lesz, hogy a meta opciókat, például a fejléceket is tárolja egy másik állandóban.

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

Végül hívjuk meg a korábban importált post függvényt, és adjuk át argumentumként a korábban definiált url-t, adat- és opcióváltozókat. Mivel ez egy ígéretet ad vissza, akkor ezt használhatja a válasz kezelésére, amikor azt végül visszaküldik.

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

Mindezek végén a with-axios fájlban lévő kódnak így kell kinéznie:

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

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

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

És amikor a szkriptet a node with-axios.js használatával futtatja, a következő kimenetet kell megjelenítenie:

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

Végső szavak

Ebben a bejegyzésben ugyanazt a szkriptet készítettük el három különböző megközelítéssel. Ennek célja az volt, hogy rávilágítsunk, mennyire egyszerű a etoppc.com API használata, és hogyan használhatjuk azt Javascriptben, különösen a NodeJS-ben.

  Hogyan nyerjünk az ügyfelek elégedettségén a Freshworks segítségével

Az összes többi végpont hasonló módon használható; csak a végpont és a paraméterek változnak, amelyeket el kell küldenie a kérés törzsének részeként. Az API dokumentációja itt található.