Како користити вдзвдз АПИ у ЈаваСцрипт-у (НодеЈС)

У овом туторијалу, показаћу како се користи вдзвдз АПИ у НодеЈС-у.

Да бисмо то показали, направићемо једноставну скрипту која, када се изврши, штампа ИП адресу Гоогле-овог сервера за претрагу. Ова скрипта ће користити крајњу тачку ДНС записа вдзвдз-овог АПИ-ја.

Да бисмо га изградили, користићемо три приступа, од којих први користи уграђени хттпс модул у НодеЈС-у. Други ће користити модул за преузимање чвора. Затим ће последњи користити акиос клијентску библиотеку.

Шта је вдзвдз АПИ?

вдзвдз је веб локација која пружа алате, АПИ-је и ресурсе за креирање, управљање и развој онлајн пословања. У ове алате је укључен АПИ који се може искористити за управљање перформансама, безбедношћу и ревизијом веб локације за проблеме са сајтом. АПИ има великодушан бесплатни ниво који можете искористити.

Предуслови

Да бисте пратили овај водич, биће вам потребно разумевање ЈаваСцрипт-а, укључујући обећања и ЕС6 синтаксу. Што се тиче софтвера, требало би да имате инсталиран НодеЈС и уређивач текста као што је Висуал Студио Цоде.

Биће вам потребан вдзвдз налог да бисте добили АПИ кључ за аутентификацију приликом постављања захтева. Да бисте га добили, идите на одредишну страницу АПИ-ја и направите бесплатан налог.

Након што креирате налог, требало би да будете преусмерени на контролну таблу, где ћете пронаћи свој АПИ кључ.

Изградња пројекта

За почетак, креирајте фасциклу пројекта и отворите је помоћу терминала по вашем избору, а затим покрените наредбу испод.

npm init -y

Горња команда ће иницијализовати директоријум пројекта као НодеЈС пројекат.

Затим покрените наредбу испод, која ће инсталирати све зависности за наш пројекат

npm install dotenv axios node-fetch

Након што су зависности успешно инсталиране, креирајте три скрипте у основној фасцикли пројекта и то ванилла.јс, витх-акиос.јс, витх-фетцх.јс и .енв датотеку за чување наших променљивих окружења.

На крају, корен пројекта би требало да изгледа овако:

Затим отворите .енв датотеку и додајте свој вдзвдз АПИ кључ са следећим редом кода:

API_KEY=<api key>

Замените <АПИ кључ> својим стварним АПИ кључем.

Са Ванилла.јс

НодеЈС има уграђени хттп и хттпс модул који можемо користити за слање клијентских захтева. Прво ћемо користити овај приступ.

  Како сакрити лоше твитове помоћу напредних Твиттер филтера

Отворите датотеку ванилла.јс и додајте следеће линије кода на врх да бисте увезли зависности пројекта.

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

Затим ћемо позвати функцију цонфиг() за учитавање променљивих окружења. Затим ћемо сачувати АПИ кључ и име хоста у променљиве.

config();

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

Када позовемо функцију захтева да покренемо ХТТП захтев у НодеЈС-у, мораћемо да обезбедимо опције за хост и крајњу тачку на које желимо да се повежемо, ХТТП метод који ћемо користити и заглавља за захтев. Дакле, следеће ћемо креирати променљиву која ће чувати ове опције.

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

До сада, код у датотеци ванилла.јс изгледа овако:

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

config();

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

const options = {
  hostname: "api.techblog.co.rs.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);
});

Променљива података је једноставно стринг у који ћемо похранити серверов ЈСОН одговор док нам се шаље назад.

Да бисмо заиста ускладиштили податке, слушаћемо догађаје објекта одговора о подацима. Кад год се овај догађај покрене, додаћемо део података које сервер шаље променљивој података.

Затим да бисмо коначно користили податке, слушаћемо догађај на крају на објекту одговора. Ово ће бити позвано када сви подаци буду послати са сервера и када заврши свој одговор.

На крају, саслушаћемо грешке и пријавити их на конзолу ако се појаве.

Због тога би позив функције захтева требао изгледати овако

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.techblog.co.rs.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();

Сада, ако се вратите на терминал и покренете скрипту користећи команду ноде ванилла.јс, требало би да добијете следећи излаз.

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

То је то за први део. Очигледан недостатак коришћења уграђених ХТТП/С модула је то што је опширно. Клијентске библиотеке као што је ноде-фетцх ће вам помоћи да направите исти програм, али са јаснијим и сажетијим кодом.

  6 најбољих Висио прегледача за гледање ВСД формата

Са преузимањем чворова

Да бисте креирали исту скрипту али са ноде-фетцх, отворите датотеку витх-фетцх.јс и додајте следеће увозе на врх.

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

Затим позовите функцију цонфиг да бисте конфигурисали променљиве окружења и поставили константе за АПИ_КЕИ и хост чије А записе ћемо захтевати.

config();

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

Затим ћемо дефинисати функцију за упућивање АПИ позива. Ова функција ће бити асинхрона.

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

Унутар тела функције треба да позовемо функцију преузимања коју смо раније увезли из пакета ноде-фетцх.

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

А покретање те скрипте са чвором витх-фетцх.јс требало би да произведе следећи излаз:

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

Са Акиос-ом

На крају, користићемо Акиос за приступ вдзвдз АПИ-ју. За почетак, хајде да увеземо пакете дотенв и акиос.

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

Затим, позовимо функцију цонфиг за подешавање променљивих окружења. Поред тога, чувајмо име хоста и АПИ кључ у одвојеним константама.

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

Сада, хајде да сачувамо УРЛ крајње тачке АПИ-ја у другој константи

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

На крају свега овога, код у витх-акиос датотеци би требало да изгледа овако:

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

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

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

А када покренете скрипту користећи чвор са-акиос.јс, требало би да прикаже следећи излаз:

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

Завршне речи

У овом посту смо направили исту скрипту са три различита приступа. Циљ овога је био да се истакне колико је лако коришћење вдзвдз АПИ-ја и како бисмо га могли користити у Јавасцрипт-у, посебно у НодеЈС-у.

  Како сакрити лоше твитове помоћу напредних Твиттер филтера

Све остале крајње тачке се могу користити на сличан начин; све што се мења је крајња тачка и параметри које морате да пошаљете као део тела захтева. Документацију за АПИ можете пронаћи овде.