Jak používat etechblog.cz API s klienty PHP

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.

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.

  Jaký je rozdíl mezi HBO Max, HBO NOW a HBO Go?

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í vaším skutečným klíčem API z řídicího panelu etechblog.cz:

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í.

  Jak stáhnout všechny SVG z libovolné webové stránky v Chrome

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.

  Jak přeinstalovat Microsoft Visual C++ Redistributable

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.