Sådan bruger du toadmin.dk API med PHP-klienter

I denne guide vil vi gennemgå de forskellige PHP-klienter, du kan bruge til at oprette forbindelse til toadmin.dk API.

Specifikt vil vi dække brugen af ​​toadmin.dk API med file_get_contents-funktionen, Guzzle, HTTPful og Symfonys HTTPS-klient.

Hvad er toadmin.dk API?

toadmin.dk giver et sæt gratis værktøjer, som du kan bruge til at overvåge dit websteds ydeevne. Disse værktøjer inkluderer en brudt link-analysator, tid til at indlæse og en DNS-kontrol. Disse værktøjer kan tilgås online via webgrænsefladen eller API’et.

API’en er baseret på HTTP og kan tilgås fra ethvert programmeringssprog med et HTTP-klientbibliotek. API’en har et generøst gratis niveau, som du kan begynde at bruge uden at skulle angive betalingsoplysninger.

Hvad vi skal bygge

Vi vil skrive et script, eksekverbart fra kommandolinjen, som vil beregne, hvor lang tid det tager at indlæse Google-webstedet og udskrive dem til terminalen. Vi vil implementere dette enkle program ved hjælp af forskellige PHP HTTP-klienter for at demonstrere, hvordan brugen af ​​API’en ser ud.

Konkret skal vi bruge de indbyggede funktioner – file_get_contents() og php_curl, og udvidelsen Guzzle PHP. Hvor simple disse eksempler end kan se ud, demonstrerer de kernekonceptet ved at bruge toadmin.dk API.

Forudsætninger

For at følge med skal du kende PHP på forhånd og have det installeret på din computer. Derudover skal du bruge Composer til at administrere udvidelser.

Til sidst skal du også bruge en teksteditor til at skrive kode i. I mit tilfælde skal jeg bruge Visual Studio Code, en populær open source teksteditor fra Microsoft. Du kan downloade det fra Visual Studio Code-webstedet.

toadmin.dk API oversigt

toadmin.dk API’en har forskellige slutpunkter afhængigt af, hvad du vil gøre. Den komplette liste over endepunkter og deres tilhørende dokumentation kan findes på dokumentationssiden.

Oprettelse af en toadmin.dk-konto

For at komme i gang med at bruge API’en skal du oprette en konto ved at gå til API-landingssiden og klikke på tilmeldingsknappen. Når tilmeldingen er gennemført, vil du blive ført til dashboardet, hvor du vil se din API-nøgle. Dashboardet skal være som på billedet nedenfor. Jeg har mørklagt min API-nøgle af sikkerhedsmæssige årsager.

I hver API-anmodning, du foretager, skal du angive denne nøgle som en anmodningsoverskrift. Om kort tid vil du se, hvordan dette kan gøres.

  Hvad er forskellen mellem CC og BCC i e-mail

Med en toadmin.dk-konto oprettet og PHP installeret, kan vi begynde at oprette projektet.

Oprettelse af projektmappen

Først skal du oprette en mappe, hvor vi gemmer projektfilerne. Derefter skal du oprette følgende filer

  • .env
  • with_curl.php
  • with_file_get_contents.php
  • with_guzzle.php

Kør derefter følgende kommando for at installere vlucas/phpdotenv og guzzlehttp/guzzle-udvidelsen

composer require vlucas/phpdotenv guzzlehttp/guzzle

På dette tidspunkt skulle din projektmappe se sådan ud:

Åbn nu .env-filen og tilføj følgende kodelinje, og erstat med din faktiske API-nøgle fra toadmin.dk-dashboardet:

API_KEY=<your-api-key>

Brug af file_get_contents()

Den første metode, vi kunne bruge til at lave HTTP-anmodninger, er at kalde funktionen file_get_contents() som er indbygget i PHP. Funktionssignaturen for funktionen file_get_contents() er som følger:

file_get_contents(path, include_path, context)

Mens metoden ofte bruges til at læse indholdet af en fil i lokal lagring, kan vi bruge den til at læse en webressource, såsom data returneret af et API-slutpunkt.

For nu at komme i gang skal du åbne with_file_get_contents.php og tilføje PHP-koden.

<?php
   // all the code to be inserted here
?>

Dernæst kan vi komme i gang med at indlæse udvidelser. Tilføj følgende kodelinje til din fil

require_once('vendor/autoload.php');

Dernæst kan vi indlæse vores miljøvariabler, som inkluderer API-nøglen

$dotenv = DotenvDotenv::createImmutable(__DIR__);
$dotenv->load();

Derefter kan vi definere nyttelasten. Dette vil være data, vi sender som en del af anmodningsorganet

$payload = json_encode([
    "url" => "https://www.google.com", 
    "proxyCountry" => "us",
    "followRedirect" => true
]);

Vi har oprettet en nyttelastvariabel og tildelt den til en JSON-streng, der indeholder url, proxyCountry og followRedirect som egenskaber.

URL-egenskaben angiver den webside, hvis indlæsningstid vi vil kontrollere.

ProxyCountry er placeringen af ​​den server, vi vil bruge til at foretage anmodningen. I dette tilfælde bruger vi USA-serveren, men du kan vælge mellem Indien, Kina, Storbritannien og Frankrig. Du kan læse dokumentationen for flere detaljer.

Derefter specificerer followRedirect, om proxyserveren skal følge eventuelle omdirigeringer og måle responstiden for det endelige svar eller den første omdirigering.

Bagefter kan vi oprette muligheder, der konfigurerer vores anmodning ved at tilføje denne kode:

$options = [
    "http" => [
        "method" => "POST",
        "header" => array("Content-Type: application/json", "x-api-key : " . $_ENV['API_KEY']),
        "content" => $payload
    ] 
];

Ved at gøre dette har vi oprettet et optionsobjekt, der angiver, at vores HTTP-metode er POST, og vi har en header, der specificerer to egenskaber, indholdstypen som JSON og x-api-nøglen som API-nøglen, som du har angivet i .env-fil og er blevet indlæst som en miljøvariabel.

  Sådan skriver du et Apple II BASIC-program i din webbrowser

Dernæst kan vi lave anmodningen ved at oprette en strøm, hvor vores muligheder vil blive skrevet til:

$context = stream_context_create($options);

Dernæst kalder vi metoden file_get_contents() for at lave anmodningen og gemme svaret som en variabel.

$response = file_get_contents("https://api.toadmin.dk.com/loadtime", false, $context);

Vi sendte anmodningen til https://api.toadmin.dk.com/loadtime. Falsk fortæller PHP ikke at bruge stien. Og vi videregiver den kontekst, vi har skabt, til metoden.

For at vise svaret bruger vi output som følger.

echo "Loadtime: " . json_decode($response)->data->total . "n";

I slutningen af ​​dette skal din fil se sådan ud:

<?php
    require_once('vendor/autoload.php');

    $dotenv = DotenvDotenv::createImmutable(__DIR__);
    $dotenv->load();

    $payload = json_encode([
        "url" => "https://www.google.com", 
        "proxyCountry" => "us",
        "followRedirect" => true
    ]);

    $options = [
        "http" => [
            "method" => "POST",
            "header" => array("Content-Type: application/json", "x-api-key : " . $_ENV['API_KEY']),
            "content" => $payload
        ] 
    ];

    $context = stream_context_create($options);

    $response = file_get_contents("https://api.toadmin.dk.com/loadtime", false, $context);

    echo "Loadtime: " . json_decode($response)->data->total . "n";
?>

Når du kører filen med følgende kommando:

php with_file_get_contents.php

Du får følgende output

Loadtime: 81

Brug af cURL

cURL er et kommandolinjeværktøj, der bruges til at lave URL-anmodninger på klientsiden. I PHP kan det bruges ved hjælp af php-curl-værktøjet. For at begynde at bruge den skal du åbne filen with_curl.php og skrive kedelpladen PHP

<?php
    // all new code will be written here
?>

Lad os derefter importere udvidelser og indlæse API_KEY miljøvariablen defineret i .env filen

require_once('vendor/autoload.php');

$dotenv = DotenvDotenv::createImmutable(__DIR__);
$dotenv->load();

Dernæst vil vi oprette en variabel til at gemme overskrifterne på vores objekt som et array, hvor hvert enkelt element i arrayet er en specifik header.

$header = ["Content-type: application/json", "x-api-key: " . $_ENV['API_KEY']];

Vi definerede to overskrifter, en til indholdstypen og en til API-nøglen.

Så kan vi definere forespørgslens krop.

$body = json_encode([
    "url" => "google.com",
    "proxyCountry" => "us",
    "followRedirect" => true
]);

Efter dette kan vi oprette en curl-session ved hjælp af curl_init()-funktionen. Vi kan sende den URL, vi ønsker at lave anmodningen til, som et argument til funktionskaldet.

$ch = curl_init("https://api.toadmin.dk.com/loadtime");

Nu kan vi sætte alt sammen ved at definere overskriften og brødteksten som muligheder for sessionen. Til dette vil vi bruge funktionen curl_setopt_array()

curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_HTTPHEADER => $header,
    CURLOPT_POSTFIELDS => $body
]);

For at foretage anmodningen kalder vi curl_exec()-funktionen

$response = curl_exec($ch);

Vi har gemt svaret i $respons-variablen, så vi kan lukke sessionen for at frigøre systemressourcer, der bruges af sessionen.

curl_close($ch);

Til sidst kan vi udskrive svaret på skærmen ved hjælp af var_dump.

var_dump($response);

I sidste ende skulle din script-fil se sådan ud

<?php
    require_once('vendor/autoload.php');

    $dotenv = DotenvDotenv::createImmutable(__DIR__);
    $dotenv->load();

    $header = ["Content-type: application/json", "x-api-key: " . $_ENV['API_KEY']];

    $body = json_encode([
        "url" => "google.com",
        "proxyCountry" => "us",
        "followRedirect" => true
    ]);

    $ch = curl_init("https://api.toadmin.dk.com/loadtime");

    curl_setopt_array($ch, [
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_HTTPHEADER => $header,
        CURLOPT_POSTFIELDS => $body
    ]);

    $response = curl_exec($ch);

    curl_close($ch);

    var_dump($response);
?>

Når vi kører scriptet ved hjælp af php with_curl.php, skulle du få følgende output:

{"timestamp":1666083632547,"apiStatus":"success","apiCode":200,"meta":{"url":"google.com","followRedirect":true,"redirectedURL":"https://www.google.com/?gws_rd=ssl","test":{"id":"d20h1hb409qbfwm0g534l51asugpi5hl"}},"data":{"dns":12,"connect":17,"tls":6,"send":21,"wait":110,"total":114}}bool(true)

Anmodningen blev gennemført, og API’en svarede med JSON0-data. Du kan bruge disse data, som du vil.

  Sådan vælger du, hvilke udvidelser der skal vises på din Edge-værktøjslinje

Med Guzzle

I den sidste del af denne tutorial vil vi bruge Guzzle til at skrive scriptet. Som altid starter vi med at indsætte PHP-kedelpladen inde i with_guzzle.php

<?php
    // all the code will go here
?>

Derefter kan vi importere udvidelser og Guzzle Client og Request Objects og indlæse miljøvariabler.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Dernæst kan vi indlæse miljøvariabler.

$dotenv = DotenvDotenv::createImmutable(__DIR__);
$dotenv->load();

Bagefter kan vi instansiere en Guzzle HTTP-klient

$client = new GuzzleHttpClient();

Derefter kan vi fortsætte med at oprette overskrifter til vores anmodning

$headers = [
    'x-api-key' => $_ENV['API_KEY'],
    'Content-Type' => 'application/json'
];

Dernæst kan vi definere indholdet af anmodningen

$body = json_encode([
    "url" => "google.com",
    "proxyCountry" => "us",
    "followRedirect" => true
]);

Vi kan derefter foretage anmodningen ved at instansiere Request-klassen og sende API-endepunktets URL, header og body.

$request = new Request('POST', 'https://api.toadmin.dk.com/loadtime', $headers, $body);

Så kan vi sende anmodningen ved at tilføje denne kodelinje:

$response = $client->sendAsync($request)->wait();

Når anmodningen er sendt, kan vi modtage anmodningens brødtekst som følger

$response_body = $response->getBody();

I sidste ende kan vi afkode JSON-svaret og udskrive indlæsningstiden

echo "Loadtime: " . json_decode($response_body)->data->total . "n";

Så i sidste ende skulle filen se sådan ud:

<?php
    require_once('vendor/autoload.php');

    use GuzzleHttpClient;
    use GuzzleHttpPsr7Request;

    $dotenv = DotenvDotenv::createImmutable(__DIR__);
    $dotenv->load();
    

    $client = new GuzzleHttpClient();

    $headers = [
        'x-api-key' => $_ENV['API_KEY'],
        'Content-Type' => 'application/json'
    ];

    $body = json_encode([
        "url" => "google.com",
        "proxyCountry" => "us",
        "followRedirect" => true
    ]);

    $request = new Request('POST', 'https://api.toadmin.dk.com/loadtime', $headers, $body);

    $response = $client->sendAsync($request)->wait();

    $response_body = $response->getBody();

    echo "Loadtime: " . json_decode($response_body)->data->total . "n";
?>

Og når du udfører scriptet ved hjælp af følgende kommando:

$php with_guzzle.php

Og du vil se svaret:

Loadtime: 130

Konklusion

I denne artikel gennemgik vi de forskellige klienter, du måske vil bruge, når du opretter et PHP-projekt, der kræver toadmin.dk API.

Mens scripts i dette projekt bruger kommandolinjen som den primære form for output, kan projekter i den virkelige verden præsentere svaret på en webside eller skrive det til en fil. Eksempler på scripts i denne artikel var enkle, men de demonstrerer kernekonceptet for at bruge toadmin.dk API. For at bruge forskellige API’er kan du ændre slutpunktet og sende forskellige muligheder i anmodningsteksten.

Du kan også være interesseret i, hvordan du bruger toadmin.dk DNS Lookup API i Javascript.