V této příručce si projdeme různé klienty PHP, které můžete použít k připojení k rozhraní etechblog.cz API.
Konkrétně se budeme zabývat používáním etechblog.cz API s funkcí file_get_contents, Guzzle, HTTPful a HTTPS klientem Symfony.
Table of Contents
Co je etechblog.cz API?
etechblog.cz poskytuje sadu bezplatných nástrojů, které můžete použít ke sledování výkonu svého webu. Tyto nástroje zahrnují analyzátor nefunkčních odkazů, čas načítání a kontrolu DNS. K těmto nástrojům lze přistupovat online přes webové rozhraní nebo API.
API je založeno na HTTP a lze k němu přistupovat z libovolného programovacího jazyka s klientskou knihovnou HTTP. Rozhraní API má velkorysou bezplatnou úroveň, kterou můžete začít používat, aniž byste museli poskytovat platební údaje.
Co budeme stavět
Napíšeme skript spustitelný z příkazové řádky, který spočítá, jak dlouho trvá načtení webu Google a vytištění na terminál. Tento jednoduchý program implementujeme pomocí různých PHP HTTP klientů, abychom předvedli, jak vypadá používání API.
Konkrétně budeme používat vestavěné funkce – file_get_contents() a php_curl a rozšíření Guzzle PHP. Jakkoli se tyto příklady mohou zdát jednoduché, demonstrují základní koncepty používání etechblog.cz API.
Předpoklady
Abyste mohli pokračovat, musíte PHP znát předem a mít jej nainstalovaný v počítači. Kromě toho budete ke správě rozšíření potřebovat Composer.
A konečně, budete také potřebovat textový editor pro psaní kódu. V mém případě budu používat Visual Studio Code, populární open-source textový editor od Microsoftu. Můžete si jej stáhnout z webu Visual Studio Code.
Přehled etechblog.cz API
Wdzwdz API má různé koncové body v závislosti na tom, co chcete dělat. Úplný seznam koncových bodů a jejich související dokumentace lze nalézt na stránce dokumentace.
Vytvoření účtu etechblog.cz
Chcete-li začít používat rozhraní API, budete si muset vytvořit účet tak, že přejdete na vstupní stránku rozhraní API a kliknete na tlačítko registrace. Po dokončení registrace budete přesměrováni na řídicí panel, kde uvidíte svůj klíč API. Palubní deska by měla vypadat jako na obrázku níže. Z bezpečnostních důvodů jsem začernil svůj klíč API.
V každém požadavku API budete muset poskytnout tento klíč jako hlavičku požadavku. Brzy uvidíte, jak to lze provést.
S vytvořeným účtem etechblog.cz a nainstalovaným PHP můžeme začít vytvářet projekt.
Vytvoření složky projektu
Nejprve si vytvořte složku, kam budeme ukládat soubory projektu. Poté vytvořte následující soubory
- .env
- with_curl.php
- with_file_get_contents.php
- with_guzzle.php
Poté spusťte následující příkaz k instalaci rozšíření vlucas/phpdotenv a guzzlehttp/guzzle
composer require vlucas/phpdotenv guzzlehttp/guzzle
V tomto okamžiku by složka vašeho projektu měla vypadat takto:
Nyní otevřete soubor .env a přidejte následující řádek kódu, který nahradí
API_KEY=<your-api-key>
Použití file_get_contents()
První metodou, kterou bychom mohli použít k vytváření požadavků HTTP, je volání funkce file_get_contents(), která je zabudována do PHP. Podpis funkce funkce file_get_contents() je následující:
file_get_contents(path, include_path, context)
I když se tato metoda často používá ke čtení obsahu souboru v místním úložišti, můžeme ji použít ke čtení webového zdroje, jako jsou data vrácená koncovým bodem API.
Nyní, abyste mohli začít, otevřete with_file_get_contents.php a přidejte standardní PHP kód.
<?php // all the code to be inserted here ?>
Dále můžeme začít s načítáním rozšíření. Přidejte do souboru následující řádek kódu
require_once('vendor/autoload.php');
Dále můžeme načíst naše proměnné prostředí, které zahrnují klíč API
$dotenv = DotenvDotenv::createImmutable(__DIR__); $dotenv->load();
Poté můžeme definovat užitečné zatížení. Toto budou data, která zašleme jako součást těla žádosti
$payload = json_encode([ "url" => "https://www.google.com", "proxyCountry" => "us", "followRedirect" => true ]);
Vytvořili jsme proměnnou užitečného zatížení a přiřadili ji k řetězci JSON, který obsahuje vlastnosti url, proxyCountry a followRedirect.
Vlastnost url určuje webovou stránku, jejíž dobu načítání chceme zkontrolovat.
ProxyCountry je umístění serveru, který chceme použít k vytvoření požadavku. V tomto případě používáme server USA, ale můžete si vybrat z Indie, Číny, Velké Británie a Francie. Další podrobnosti si můžete přečíst v dokumentaci.
Potom followRedirect určuje, zda má proxy server sledovat nějaká přesměrování a měřit dobu odezvy konečné odpovědi nebo prvního přesměrování.
Poté můžeme vytvořit možnosti, které nakonfigurují náš požadavek přidáním tohoto kódu:
$options = [ "http" => [ "method" => "POST", "header" => array("Content-Type: application/json", "x-api-key : " . $_ENV['API_KEY']), "content" => $payload ] ];
Tímto způsobem jsme vytvořili objekt options, který určuje, že naše metoda HTTP je POST, a máme hlavičku, která určuje dvě vlastnosti, typ obsahu jako JSON a x-api-key jako klíč API, který jste zadali v .env a byl načten jako proměnná prostředí.
Dále můžeme požadavek provést vytvořením streamu, do kterého budou zapsány naše možnosti:
$context = stream_context_create($options);
Dále zavoláme metodu file_get_contents(), abychom provedli požadavek a uložili odpověď jako proměnnou.
$response = file_get_contents("https://api.etechblog.cz.com/loadtime", false, $context);
Odeslali jsme požadavek na https://api.etechblog.cz.com/loadtime. Nepravda říká PHP, aby cestu nepoužívalo. A kontext, který jsme vytvořili, předáme metodě.
Pro zobrazení odezvy použijeme výstup následovně.
echo "Loadtime: " . json_decode($response)->data->total . "n";
Na konci by měl váš soubor vypadat takto:
<?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.etechblog.cz.com/loadtime", false, $context); echo "Loadtime: " . json_decode($response)->data->total . "n"; ?>
Když spustíte soubor pomocí následujícího příkazu:
php with_file_get_contents.php
Získáte následující výstup
Loadtime: 81
Pomocí cURL
cURL je nástroj příkazového řádku, který se používá k vytváření požadavků na adresy URL na straně klienta. V PHP jej lze použít pomocí utility php-curl. Chcete-li jej začít používat, otevřete soubor with_curl.php a napište standardní PHP
<?php // all new code will be written here ?>
Poté importujeme rozšíření a načteme proměnnou prostředí API_KEY definovanou v souboru .env
require_once('vendor/autoload.php'); $dotenv = DotenvDotenv::createImmutable(__DIR__); $dotenv->load();
Dále vytvoříme proměnnou pro uložení záhlaví našeho objektu jako pole, kde každý jednotlivý prvek v poli je konkrétní záhlaví.
$header = ["Content-type: application/json", "x-api-key: " . $_ENV['API_KEY']];
Definovali jsme dvě hlavičky, jednu pro typ obsahu a jednu pro klíč API.
Poté můžeme definovat tělo požadavku.
$body = json_encode([ "url" => "google.com", "proxyCountry" => "us", "followRedirect" => true ]);
Poté můžeme vytvořit relaci curl pomocí funkce curl_init(). Jako argument pro volání funkce můžeme předat URL, na kterou chceme požadavek vznést.
$ch = curl_init("https://api.etechblog.cz.com/loadtime");
Nyní můžeme dát vše dohromady tím, že definujeme záhlaví a tělo jako možnosti pro relaci. K tomu použijeme funkci curl_setopt_array().
curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_HTTPHEADER => $header, CURLOPT_POSTFIELDS => $body ]);
Abychom provedli požadavek, zavoláme funkci curl_exec().
$response = curl_exec($ch);
Odpověď jsme uložili do proměnné $response, takže můžeme relaci zavřít, abychom uvolnili systémové prostředky používané relací.
curl_close($ch);
Nakonec můžeme odpověď vytisknout na obrazovku pomocí var_dump.
var_dump($response);
Nakonec by váš soubor skriptu měl vypadat takto
<?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.etechblog.cz.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); ?>
Když spustíme skript pomocí php with_curl.php, měli byste získat následující výstup:
{"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)
Požadavek byl úspěšně dokončen a rozhraní API odpovědělo daty JSON0. Tyto údaje můžete použít, jak chcete.
S Guzzle
V poslední části tohoto tutoriálu použijeme Guzzle k napsání skriptu. Jako vždy začneme vložením základního kódu PHP do souboru with_guzzle.php
<?php // all the code will go here ?>
Poté můžeme importovat rozšíření a Guzzle Client a Request Objects a načíst proměnné prostředí.
require_once('vendor/autoload.php'); use GuzzleHttpClient; use GuzzleHttpPsr7Request;
Dále můžeme načíst proměnné prostředí.
$dotenv = DotenvDotenv::createImmutable(__DIR__); $dotenv->load();
Poté můžeme vytvořit instanci klienta Guzzle HTTP
$client = new GuzzleHttpClient();
Poté můžeme přistoupit k vytvoření záhlaví pro náš požadavek
$headers = [ 'x-api-key' => $_ENV['API_KEY'], 'Content-Type' => 'application/json' ];
Dále můžeme definovat tělo požadavku
$body = json_encode([ "url" => "google.com", "proxyCountry" => "us", "followRedirect" => true ]);
Poté můžeme provést požadavek vytvořením instance třídy Request a předáním adresy URL koncového bodu API, záhlaví a těla.
$request = new Request('POST', 'https://api.etechblog.cz.com/loadtime', $headers, $body);
Poté můžeme odeslat požadavek přidáním tohoto řádku kódu:
$response = $client->sendAsync($request)->wait();
Po odeslání žádosti můžeme obdržet tělo žádosti následovně
$response_body = $response->getBody();
Nakonec můžeme dekódovat odpověď JSON a vytisknout dobu načítání
echo "Loadtime: " . json_decode($response_body)->data->total . "n";
Nakonec by tedy soubor měl vypadat takto:
<?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.etechblog.cz.com/loadtime', $headers, $body); $response = $client->sendAsync($request)->wait(); $response_body = $response->getBody(); echo "Loadtime: " . json_decode($response_body)->data->total . "n"; ?>
A když skript spustíte pomocí následujícího příkazu:
$php with_guzzle.php
A uvidíte odpověď:
Loadtime: 130
Závěr
V tomto článku jsme prošli různými klienty, které můžete chtít použít při vytváření projektu PHP, který bude vyžadovat etechblog.cz API.
Zatímco skripty v tomto projektu používají příkazový řádek jako primární formu výstupu, reálné projekty mohou prezentovat odpověď na webové stránce nebo ji zapsat do souboru. Ukázkové skripty v tomto článku byly jednoduché, ale demonstrují základní koncepty použití etechblog.cz API. Chcete-li použít různá rozhraní API, můžete změnit koncový bod a předat různé možnosti v těle požadavku.
Také by vás mohlo zajímat, jak používat etechblog.cz DNS Lookup API v Javascriptu.