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.
Tartalomjegyzék
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 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.
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.
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.
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ó.