Tipsbilk.net API i NodeJS: 3 enkle metoder!

Bruke tipsbilk.net API i NodeJS

I denne veiledningen skal vi utforske hvordan du kan benytte tipsbilk.net sitt API i et NodeJS-miljø.

For å illustrere dette, skal vi skape et enkelt skript. Når det kjøres, vil det hente og vise IP-adressene til Googles søkeservere. Skriptet vil gjøre bruk av DNS-post-endepunktet fra tipsbilk.net sitt API.

Vi skal demonstrere tre forskjellige metoder for å oppnå dette. Først skal vi bruke den innebygde «https»-modulen i NodeJS. Deretter skal vi benytte «node-fetch»-modulen. Til slutt skal vi ta i bruk «axios»-klientbiblioteket.

Hva er tipsbilk.net API?

tipsbilk.net er en plattform som tilbyr et utvalg av verktøy, API-er og ressurser. Disse er designet for å hjelpe deg med å bygge, administrere og ekspandere din online virksomhet. Et av verktøyene er et API som kan brukes til å analysere og forbedre et nettsteds ytelse og sikkerhet, samt feilsøke potensielle problemer. API-et tilbyr et generøst gratis nivå for brukere.

Forutsetninger

For å følge denne opplæringen, er det en fordel å ha en grunnleggende forståelse av JavaScript, inkludert konsepter som Promises og ES6-syntaks. Du bør også ha NodeJS og en tekstredigerer som Visual Studio Code installert på maskinen din.

Du trenger en tipsbilk.net-konto for å få tilgang til en API-nøkkel. Denne nøkkelen brukes for å autentisere dine forespørsler. Du kan registrere deg gratis på API-siden.

Etter at du har opprettet kontoen din, vil du bli videresendt til dashbordet hvor du vil finne API-nøkkelen din.

Oppretting av prosjektet

Først må du opprette en ny mappe for prosjektet ditt. Åpne denne mappen i din foretrukne terminal og kjør kommandoen nedenfor:

npm init -y

Dette vil initialisere prosjektmappen som et NodeJS-prosjekt.

Deretter installerer du de nødvendige pakkene ved å kjøre denne kommandoen:

npm install dotenv axios node-fetch

Når avhengighetene er installert, oppretter du tre JavaScript-filer i prosjektmappens rot, kalt «vanilla.js», «with-axios.js» og «with-fetch.js». Du oppretter også en «.env»-fil for å lagre miljøvariablene dine.

Den endelige prosjektstrukturen skal se omtrent slik ut:

Åpne «.env»-filen og legg til tipsbilk.net API-nøkkelen, som følger:

API_KEY=<din_api_nøkkel>

Erstatt «<din_api_nøkkel>» med din egen API-nøkkel.

Med Vanilla.js

NodeJS inkluderer «http» og «https»-moduler som kan brukes til å sende HTTP-forespørsler. Vi starter med å bruke denne metoden.

Åpne «vanilla.js»-filen og legg til følgende linjer for å importere prosjektets avhengigheter:

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

Deretter kaller vi «config()»-funksjonen for å laste inn miljøvariabler. Så lagrer vi API-nøkkelen og vertsnavnet i variabler:

config();

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

Når vi bruker forespørselsfunksjonen for å sende en HTTP-forespørsel i NodeJS, må vi definere opsjoner som vert, endepunkt, HTTP-metode og overskrifter. La oss opprette en variabel for disse:

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

Koden i «vanilla.js»-filen ser nå slik ut:

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

config();

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

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

Nå kan vi kalle «request»-funksjonen og sende inn opsjonene:

const req = request(options, response => {

  // Vi legger til response handlers her

});

«request»-funksjonen tar to argumenter: opsjonsobjektet vi definerte, og en tilbakeringingsfunksjon. Denne funksjonen håndterer svaret fra serveren. Inne i denne funksjonen kan vi legge til hendelseslyttere for data, når all data er mottatt, eller ved feil.

Legg til disse responsbehandlerne:

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

Variabelen «data» er en streng hvor vi akkumulerer serverens JSON-svar. Vi lytter til «data»-hendelsen og legger til hver datablokk. «end»-hendelsen kalles når all data er mottatt. Til slutt lytter vi til eventuelle feil.

«request»-kallet vil nå se slik ut:

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

});

Til slutt må vi skrive data til forespørselskroppen og avslutte forespørselen:

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

Den fullstendige filen vil se slik ut:

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

config();

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

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

Kjør skriptet med «node vanilla.js»-kommandoen. Du bør se følgende resultat:

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

Dette viser den første metoden. Ulempen med de innebygde modulene er at det kan være litt detaljert. Klientbiblioteker som «node-fetch» gir en mer konsis tilnærming.

Med node-henting

Åpne «with-fetch.js»-filen og legg til disse importene:

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

Deretter kaller vi «config»-funksjonen og setter opp konstanter for API-nøkkelen og verten:

config();

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

Lag en asynkron funksjon for å gjøre API-kallet:

async function request() {
  // Funksjonskroppen kommer her
}

Inne i funksjonen kaller vi «fetch»-funksjonen:

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

Deretter behandler vi svaret:

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

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

Til slutt kaller vi funksjonen:

request();

Filen din skal nå se slik ut:

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

Kjøring av dette skriptet med «node with-fetch.js» vil gi følgende resultat:

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

Med Axios

Til slutt, la oss bruke Axios. Importér «dotenv» og «axios»-pakkene:

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

Kall «config»-funksjonen, og lagre vert og API-nøkkel i separate konstanter:

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

Lagre API-endepunktets URL:

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

Lagre forespørselsdataene:

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

Lagre overskrifter:

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

Kall «post»-funksjonen og håndter svaret:

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

Den komplette koden i «with-axios»-filen ser slik ut:

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

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

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

Kjør skriptet med «node with-axios.js» og du vil se dette resultatet:

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

Siste ord

Vi har nå demonstrert tre ulike måter å bruke tipsbilk.net API-et i et NodeJS-prosjekt. Målet er å vise hvor enkelt det er å komme i gang, og hvordan du kan bruke det i dine egne prosjekter.

Du kan benytte andre endepunkter på samme måte. Det eneste som endres er endepunktet og parameterne du sender med forespørselen. Dokumentasjonen finner du her.