So verwenden Sie die wdzwdz-API mit PHP-Clients

In diesem Leitfaden gehen wir die verschiedenen PHP-Clients durch, die Sie verwenden können, um eine Verbindung zur wdzwdz-API herzustellen.

Insbesondere werden wir die Verwendung der wdzwdz-API mit der file_get_contents-Funktion, Guzzle, HTTPful und dem HTTPS-Client von Symfony behandeln.

Was ist die wdzwdz-API?

wdzwdz bietet eine Reihe kostenloser Tools, mit denen Sie die Leistung Ihrer Website überwachen können. Zu diesen Tools gehören ein Analysetool für defekte Links, Ladezeit und ein DNS-Checker. Auf diese Tools kann online über die Webschnittstelle oder die API zugegriffen werden.

Die API basiert auf HTTP und kann von jeder Programmiersprache mit einer HTTP-Client-Bibliothek aufgerufen werden. Die API verfügt über ein großzügiges kostenloses Kontingent, das Sie verwenden können, ohne Zahlungsinformationen angeben zu müssen.

Was wir bauen werden

Wir werden ein Skript schreiben, das von der Befehlszeile ausführbar ist und berechnet, wie lange es dauert, die Google-Website zu laden und sie auf dem Terminal auszugeben. Wir werden dieses einfache Programm mit verschiedenen PHP-HTTP-Clients implementieren, um zu demonstrieren, wie die Verwendung der API aussieht.

Insbesondere werden wir die integrierten Funktionen – file_get_contents() und php_curl sowie die Erweiterung Guzzle PHP verwenden. So einfach diese Beispiele auch erscheinen mögen, sie veranschaulichen die Kernkonzepte der Verwendung der wdzwdz-API.

Voraussetzungen

Um mitzumachen, müssen Sie PHP vorher kennen und auf Ihrem Computer installiert haben. Außerdem benötigen Sie Composer, um Erweiterungen zu verwalten.

Schließlich benötigen Sie auch einen Texteditor, um Code zu schreiben. In meinem Fall werde ich Visual Studio Code verwenden, einen beliebten Open-Source-Texteditor von Microsoft. Sie können es von der Visual Studio Code-Website herunterladen.

wdzwdz-API-Übersicht

Die wdzwdz-API hat unterschiedliche Endpunkte, je nachdem, was Sie tun möchten. Die vollständige Liste der Endpunkte und die zugehörige Dokumentation finden Sie auf der Dokumentationsseite.

Erstellen eines wdzwdz-Kontos

Um mit der Verwendung der API zu beginnen, müssen Sie ein Konto erstellen, indem Sie zur API-Landingpage gehen und auf die Schaltfläche „Anmelden“ klicken. Nachdem die Anmeldung abgeschlossen ist, werden Sie zum Dashboard weitergeleitet, wo Sie Ihren API-Schlüssel sehen. Das Dashboard sollte wie im Bild unten aussehen. Ich habe meinen API-Schlüssel aus Sicherheitsgründen geschwärzt.

In jeder von Ihnen gestellten API-Anfrage müssen Sie diesen Schlüssel als Anfrage-Header angeben. In Kürze werden Sie sehen, wie dies geschehen kann.

Mit einem erstellten wdzwdz-Konto und installiertem PHP können wir mit der Erstellung des Projekts beginnen.

Erstellen des Projektordners

Erstellen Sie zunächst einen Ordner, in dem wir die Projektdateien speichern. Erstellen Sie danach die folgenden Dateien

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

Führen Sie anschließend den folgenden Befehl aus, um die Erweiterungen vlucas/phpdotenv und guzzlehttp/guzzle zu installieren

composer require vlucas/phpdotenv guzzlehttp/guzzle

Zu diesem Zeitpunkt sollte Ihr Projektordner wie folgt aussehen:

  Erläuterung der Standard-IP-Adresse des Routers

Öffnen Sie nun die .env-Datei und fügen Sie die folgende Codezeile hinzu, wobei Sie durch Ihren tatsächlichen API-Schlüssel aus dem wdzwdz-Dashboard ersetzen:

API_KEY=<your-api-key>

Verwenden von file_get_contents()

Die erste Methode, die wir verwenden könnten, um HTTP-Anfragen zu stellen, ist der Aufruf der Funktion file_get_contents(), die in PHP integriert ist. Die Funktionssignatur der Funktion file_get_contents() lautet wie folgt:

file_get_contents(path, include_path, context)

Während die Methode häufig verwendet wird, um den Inhalt einer Datei im lokalen Speicher zu lesen, können wir sie verwenden, um eine Webressource zu lesen, z. B. Daten, die von einem API-Endpunkt zurückgegeben werden.

Öffnen Sie nun zunächst die Datei with_file_get_contents.php und fügen Sie den Boilerplate-PHP-Code hinzu.

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

Als nächstes können wir mit dem Laden von Erweiterungen beginnen. Fügen Sie Ihrer Datei die folgende Codezeile hinzu

require_once('vendor/autoload.php');

Als nächstes können wir unsere Umgebungsvariablen laden, die den API-Schlüssel enthalten

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

Dann können wir die Nutzlast definieren. Dies sind Daten, die wir als Teil des Anfragetexts senden

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

Wir haben eine Payload-Variable erstellt und ihr einen JSON-String zugewiesen, der die Eigenschaften url, proxyCountry und followRedirect enthält.

Die Eigenschaft url gibt die Webseite an, deren Ladezeit wir überprüfen möchten.

Das Proxy-Land ist der Standort des Servers, den wir für die Anfrage verwenden möchten. In diesem Fall verwenden wir den USA-Server, aber Sie können zwischen Indien, China, Großbritannien und Frankreich wählen. Sie können die Dokumentation für weitere Details lesen.

Dann gibt followRedirect an, ob der Proxyserver Weiterleitungen folgen soll, und misst die Antwortzeit der endgültigen Antwort oder der ersten Weiterleitung.

Danach können wir Optionen erstellen, die unsere Anfrage konfigurieren, indem wir diesen Code hinzufügen:

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

Dadurch haben wir ein Optionsobjekt erstellt, das angibt, dass unsere HTTP-Methode POST ist, und wir haben einen Header, der zwei Eigenschaften angibt, den Inhaltstyp als JSON und den x-api-key als API-Schlüssel, den Sie in der angegeben haben .env-Datei und wurde als Umgebungsvariable geladen.

Als nächstes können wir die Anfrage stellen, indem wir einen Stream erstellen, in den unsere Optionen geschrieben werden:

$context = stream_context_create($options);

Als Nächstes rufen wir die Methode file_get_contents() auf, um die Anfrage zu stellen und die Antwort als Variable zu speichern.

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

Wir haben die Anfrage an https://api.wdzwdz.com/loadtime gestellt. Das false weist PHP an, den Pfad nicht zu verwenden. Und wir übergeben den von uns erstellten Kontext an die Methode.

  5 Tools zum Erstellen von Wall of Love Testimonials in Ihrer App

Um die Antwort anzuzeigen, verwenden wir die Ausgabe wie folgt.

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

Am Ende sollte Ihre Datei so aussehen:

<?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.wdzwdz.com/loadtime", false, $context);

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

Wenn Sie die Datei mit dem folgenden Befehl ausführen:

php with_file_get_contents.php

Sie erhalten die folgende Ausgabe

Loadtime: 81

Verwendung von cURL

cURL ist ein Befehlszeilendienstprogramm, das verwendet wird, um clientseitige URL-Anforderungen zu stellen. In PHP kann es mit dem Dienstprogramm php-curl verwendet werden. Um es zu verwenden, öffnen Sie die Datei with_curl.php und schreiben Sie die Boilerplate PHP

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

Lassen Sie uns dann Erweiterungen importieren und die Umgebungsvariable API_KEY laden, die in der .env-Datei definiert ist

require_once('vendor/autoload.php');

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

Als Nächstes erstellen wir eine Variable, um die Header unseres Objekts als Array zu speichern, wobei jedes einzelne Element im Array ein bestimmter Header ist.

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

Wir haben zwei Header definiert, einen für den Inhaltstyp und einen für den API-Schlüssel.

Dann können wir den Text der Anfrage definieren.

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

Danach können wir mit der Funktion curl_init() eine Curl-Session erstellen. Wir können die URL, an die wir die Anfrage stellen möchten, als Argument an den Funktionsaufruf übergeben.

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

Jetzt können wir alles zusammenfügen, indem wir Header und Body als Optionen für die Sitzung definieren. Dazu verwenden wir die Funktion curl_setopt_array()

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

Um die Anfrage zu stellen, rufen wir die Funktion curl_exec() auf

$response = curl_exec($ch);

Wir haben die Antwort in der $response-Variablen gespeichert, sodass wir die Sitzung schließen können, um von der Sitzung verwendete Systemressourcen freizugeben.

curl_close($ch);

Zuletzt können wir die Antwort auf dem Bildschirm mit var_dump ausgeben.

var_dump($response);

Am Ende sollte Ihre Skriptdatei so aussehen

<?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.wdzwdz.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);
?>

Wenn wir das Skript mit php with_curl.php ausführen, sollten Sie die folgende Ausgabe erhalten:

{"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)

Die Anfrage wurde erfolgreich abgeschlossen und die API hat mit JSON0-Daten geantwortet. Sie können diese Daten nach Belieben verwenden.

  So greifen Sie auf das private Instagram-Inspect-Element zu

Mit Guzzle

Im letzten Teil dieses Tutorials verwenden wir Guzzle, um das Skript zu schreiben. Wie immer beginnen wir damit, die PHP-Boilerplate in die with_guzzle.php einzufügen

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

Dann können wir Erweiterungen und den Guzzle-Client importieren und Objekte anfordern und Umgebungsvariablen laden.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Als nächstes können wir Umgebungsvariablen laden.

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

Danach können wir einen Guzzle-HTTP-Client instanziieren

$client = new GuzzleHttpClient();

Dann können wir mit der Erstellung von Headern für unsere Anfrage fortfahren

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

Als nächstes können wir den Text der Anfrage definieren

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

Wir können dann die Anfrage stellen, indem wir die Request-Klasse instanziieren und die API-Endpunkt-URL, den Header und den Body übergeben.

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

Dann können wir die Anfrage senden, indem wir diese Codezeile hinzufügen:

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

Sobald die Anfrage gesendet wurde, können wir den Text der Anfrage wie folgt erhalten

$response_body = $response->getBody();

Am Ende können wir die JSON-Antwort entschlüsseln und die Ladezeit ausdrucken

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

Am Ende sollte die Datei also so aussehen:

<?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.wdzwdz.com/loadtime', $headers, $body);

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

    $response_body = $response->getBody();

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

Und wenn Sie das Skript mit dem folgenden Befehl ausführen:

$php with_guzzle.php

Und Sie werden die Antwort sehen:

Loadtime: 130

Fazit

In diesem Artikel sind wir die verschiedenen Clients durchgegangen, die Sie möglicherweise verwenden möchten, wenn Sie ein PHP-Projekt erstellen, das die wdzwdz-API erfordert.

Während die Skripte in diesem Projekt die Befehlszeile als primäre Form der Ausgabe verwenden, könnten reale Projekte die Antwort auf einer Webseite darstellen oder in eine Datei schreiben. Die Beispielskripts in diesem Artikel waren einfach, veranschaulichen jedoch die Kernkonzepte der Verwendung der wdzwdz-API. Um andere APIs zu verwenden, können Sie den Endpunkt ändern und verschiedene Optionen im Anfragetext übergeben.

Sie könnten auch daran interessiert sein, die wdzwdz-DNS-Lookup-API in Javascript zu verwenden.