So verwenden Sie die Geekflare-API mit PHP-Clients
Veröffentlicht: 2022-10-25In 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 Funktion file_get_contents
, Guzzle, HTTPful und dem HTTPS-Client von Symfony behandeln.
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 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
, und die Erweiterung Guzzle PHP verwenden. 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. 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.
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 auf der Dokumentationsseite.
Erstellen eines Geekflare-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.
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 anschließend den folgenden Befehl aus, um die vlucas/phpdotenv
und guzzlehttp/guzzle
zu installieren
composer require vlucas/phpdotenv guzzlehttp/guzzle
Zu diesem Zeitpunkt sollte Ihr Projektordner wie folgt aussehen:

Öffnen Sie nun die .env
-Datei und fügen Sie die folgende Codezeile hinzu, wobei <your-api-key>
durch Ihren tatsächlichen API-Schlüssel aus dem Geekflare-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 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 einem 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 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. 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.geekflare.com/loadtime", false, $context);
Wir haben die Anfrage an https://api.geekflare.com/loadtime
gestellt. 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
Verwenden 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 = 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 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.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 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()
$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
.
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 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.
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
<?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.
Sie könnten auch daran interessiert sein, wie Sie die DNS-Lookup-API von Geekflare in Javascript verwenden.