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

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

Was ist die Geekflare-API?

Geekflare 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 a DNS-Checker. Auf diese Tools kann online über die Weboberfläche zugegriffen werden oder die API.

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 verwenden – file_get_contents() und php_curl, und die Erweiterung Guzzle PHP. So einfach diese Beispiele auch erscheinen mögen, sie demonstrieren die Kernkonzepte der Verwendung der Geekflare-API.

Voraussetzungen:

Um mitzumachen, müssen Sie PHP vorher kennen und auf Ihrem Computer installiert haben. Zusätzlich benötigen Sie Komponieren 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 herunterladen Visual Studio Code-Website.

Geekflare-API-Übersicht

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

Erstellen eines Geekflare-Kontos

Um mit der Verwendung der API zu beginnen, müssen Sie ein Konto erstellen, indem Sie zu gehen API-Landingpage und klicken Sie auf die Anmeldeschaltfläche. 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.

Geekflare-Dashboard-1

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.

Wenn ein Geekflare-Konto erstellt und PHP installiert ist, 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 danach den folgenden Befehl aus, um die vlucas/phpdotenv und guzzlehttp/guzzle Erweiterung

composer require vlucas/phpdotenv guzzlehttp/guzzle

Zu diesem Zeitpunkt sollte Ihr Projektordner wie folgt aussehen:

Screenshot-from-2022-10-17-10-55-35

Öffne jetzt die .env Datei und fügen Sie die folgende Codezeile hinzu und ersetzen Sie <your-api-key> mit Ihrem aktuellen API-Schlüssel aus dem Geekflare-Dashboard:

API_KEY=<your-api-key>

Using file_get_contents()

Die erste Methode, die wir verwenden könnten, um HTTP-Anforderungen zu stellen, ist der Aufruf von the file_get_contents() Funktion, die in PHP eingebaut ist. Die Funktionssignatur der file_get_contents() Funktion ist 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 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 = Dotenv\Dotenv::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 sie einer JSON-Zeichenfolge zugewiesen, die die enthält url, proxyCountry und followRedirect als Eigenschaften.

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

Die proxyCountry 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. Du kannst Lesen Sie die Dokumentation für weitere Informationen.

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

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
    ] 
];

Auf diese Weise 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 die x-api-key als den 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 nennen wir die file_get_contents() -Methode, um die Anfrage zu stellen und die Antwort als Variable zu speichern.

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

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

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 = Dotenv\Dotenv::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.geekflare.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

Using cURL

cURL ist ein Befehlszeilendienstprogramm, das verwendet wird, um clientseitige URL-Anforderungen zu stellen. In PHP kann es mit dem verwendet werden PHP-Curl Dienstprogramm. Um es zu verwenden, öffnen Sie die with_curl.php Datei 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 definiert ist .env Datei

require_once('vendor/autoload.php');

$dotenv = Dotenv\Dotenv::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 eine Curl-Session erstellen curl_init() Funktion. Wir können die URL, an die wir die Anfrage stellen möchten, als Argument an den Funktionsaufruf übergeben.

$ch = curl_init("https://api.geekflare.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 curl_setopt_array() Funktion

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

Um die Anfrage zu stellen, werden wir anrufen curl_exec() Funktion

$response = curl_exec($ch);

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

curl_close($ch);

Schließlich können wir die Antwort auf dem Bildschirm mit drucken var_dump.

var_dump($response);

Am Ende sollte Ihre Skriptdatei so aussehen

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

    $dotenv = Dotenv\Dotenv::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.geekflare.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 ausführen php with_curl.php, 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.

With Guzzle

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

<?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 GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;

Als nächstes können wir Umgebungsvariablen laden.

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

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

$client = new GuzzleHttp\Client();

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.geekflare.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 GuzzleHttp\Client;
    use GuzzleHttp\Psr7\Request;

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

    $client = new GuzzleHttp\Client();

    $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.geekflare.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, für das die Geekflare-API erforderlich ist.

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 Beispielskripte in diesem Artikel waren einfach, aber sie demonstrieren die Kernkonzepte der Verwendung der Geekflare-API. Um andere APIs zu verwenden, können Sie den Endpunkt ändern und verschiedene Optionen im Anfragetext übergeben.

Dies könnte Sie auch interessieren wie man die Geekflare DNS Lookup API in Javascript verwendet.