A etoppc.com API használata PHP kliensekkel

Ebben az útmutatóban áttekintjük a különböző PHP-klienseket, amelyek segítségével csatlakozhat a etoppc.com API-hoz.

Konkrétan a etoppc.com API használatával fogunk foglalkozni a file_get_contents függvénnyel, a Guzzle-vel, a HTTPful-val és a Symfony HTTPS-kliensével.

Mi az a etoppc.com API?

A etoppc.com ingyenes eszközöket biztosít, amelyek segítségével figyelemmel kísérheti webhelye teljesítményét. Ezek az eszközök közé tartozik a megszakadt hivatkozáselemző, a betöltési idő és a DNS-ellenőrző. Ezek az eszközök online elérhetők a webes felületen vagy az API-n keresztül.

Az API HTTP-n alapul, és bármely programozási nyelvről elérhető HTTP klienskönyvtárral. Az API bőséges ingyenes szinttel rendelkezik, amelyet fizetési adatok megadása nélkül kezdhet el használni.

Amit építeni fogunk

Írunk egy parancssorból futtatható szkriptet, amely kiszámítja, hogy mennyi ideig tart a Google webhely betöltése és kinyomtatása a terminálra. Ezt az egyszerű programot különböző PHP HTTP kliensekkel fogjuk megvalósítani, hogy bemutassuk, hogyan néz ki az API használata.

Konkrétan a beépített függvényeket fogjuk használni – file_get_contents() és php_curl, valamint a Guzzle PHP kiterjesztést. Bármily egyszerűnek tűnnek is ezek a példák, bemutatják a etoppc.com API használatának alapelveit.

Előfeltételek

A folytatáshoz előzetesen ismernie kell a PHP-t, és telepítenie kell a számítógépére. Ezenkívül szüksége lesz a Composerre a bővítmények kezeléséhez.

Végül egy szövegszerkesztőre is szüksége lesz a kód írásához. Az én esetemben a Visual Studio Code-ot fogom használni, amely egy népszerű nyílt forráskódú szövegszerkesztő a Microsofttól. Letöltheti a Visual Studio Code webhelyéről.

etoppc.com API áttekintése

A etoppc.com API különböző végpontokkal rendelkezik attól függően, hogy mit szeretne tenni. A végpontok teljes listája és a hozzájuk tartozó dokumentáció a dokumentációs oldalon található.

etoppc.com fiók létrehozása

Az API használatának megkezdéséhez létre kell hoznia egy fiókot az API nyitóoldalán, és a regisztráció gombra kattintva. A regisztráció befejezése után az irányítópultra kerül, ahol megjelenik az API-kulcs. A műszerfalnak olyannak kell lennie, mint az alábbi képen. Biztonsági okokból elsötétítettem az API-kulcsomat.

Minden API-kérésben meg kell adnia ezt a kulcsot kérésfejlécként. Hamarosan látni fogja, hogyan lehet ezt megtenni.

Egy etoppc.com fiók létrehozásával és a PHP telepítésével megkezdhetjük a projekt létrehozását.

  A Plex Media Server telepítése és beállítása Linuxon

A projektmappa létrehozása

Először hozzon létre egy mappát, ahol a projektfájlokat tároljuk. Ezt követően hozza létre a következő fájlokat

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

Ezután futtassa a következő parancsot a vlucas/phpdotenv és a guzzlehttp/guzzle kiterjesztés telepítéséhez

composer require vlucas/phpdotenv guzzlehttp/guzzle

Ezen a ponton a projektmappának így kell kinéznie:

Most nyissa meg az .env fájlt, és adja hozzá a következő kódsort, az helyére cserélve a tényleges API-kulcsot a etoppc.com irányítópulton:

API_KEY=<your-api-key>

A file_get_contents() használata

Az első módszer, amellyel HTTP-kéréseket indíthatunk, a PHP-be beépített file_get_contents() függvény meghívása. A file_get_contents() függvény aláírása a következő:

file_get_contents(path, include_path, context)

Míg a módszert gyakran használják egy helyi tárolóban lévő fájl tartalmának olvasására, használhatjuk webes erőforrások, például egy API-végpont által visszaadott adatok olvasására.

A kezdéshez nyissa meg a with_file_get_contents.php fájlt, és adja hozzá a PHP alapkódot.

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

Ezután elkezdhetjük a bővítmények betöltését. Adja hozzá a következő kódsort a fájlhoz

require_once('vendor/autoload.php');

Ezután betölthetjük környezeti változóinkat, amelyek tartalmazzák az API kulcsot

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

Ezután meghatározhatjuk a hasznos terhet. Ezeket az adatokat a kérelmező szerv részeként küldjük el

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

Létrehoztunk egy hasznos változót, és hozzárendeltük egy JSON-karakterlánchoz, amely tulajdonságként tartalmazza az url-t, a proxyCountry-t és a followRedirect-et.

Az url tulajdonság azt a weboldalt adja meg, amelynek betöltési idejét ellenőrizni szeretnénk.

A proxyCountry annak a szervernek a helye, amelyet a kérelemhez szeretnénk használni. Ebben az esetben az USA szerverét használjuk, de választhat India, Kína, az Egyesült Királyság és Franciaország közül. További részletekért elolvashatja a dokumentációt.

Ezután a followRedirect meghatározza, hogy a proxykiszolgálónak követnie kell-e az átirányításokat, és mérnie kell-e a végső válasz vagy az első átirányítás válaszidejét.

Ezt követően létrehozhatunk olyan opciókat, amelyek konfigurálják kérésünket a kód hozzáadásával:

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

Ezzel létrehoztunk egy opciós objektumot, amely meghatározza, hogy a HTTP metódusunk a POST, és van egy fejlécünk, amely két tulajdonságot ad meg: a tartalomtípust JSON-ként és az x-api-kulcsot API-kulcsként, amelyet a .env fájlt, és környezeti változóként lett betöltve.

Ezután a kérelmet egy adatfolyam létrehozásával tehetjük meg, ahol a lehetőségeink a következőkre lesznek írva:

$context = stream_context_create($options);

Ezután meghívjuk a file_get_contents() metódust a kérés elkészítéséhez, és a választ változóként tároljuk.

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

A kérést a https://api.etoppc.com.com/loadtime címre küldtük. A false azt mondja a PHP-nek, hogy ne használja az elérési utat. És az általunk létrehozott kontextust átadjuk a metódusnak.

  A Microsoft Teams beállításainak elérése és módosítása

A válasz megjelenítéséhez a kimenetet az alábbiak szerint használjuk.

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

Ennek végén a fájlnak így kell kinéznie:

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

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

Amikor a fájlt a következő paranccsal futtatja:

php with_file_get_contents.php

A következő kimenetet kapod

Loadtime: 81

cURL használata

A cURL egy parancssori segédprogram, amelyet ügyféloldali URL-kérések készítésére használnak. PHP-ben a php-curl segédprogrammal használható. A használat megkezdéséhez nyissa meg a with_curl.php fájlt, és írja be a PHP-t

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

Ezután importáljunk bővítményeket, és töltsük be az .env fájlban meghatározott API_KEY környezeti változót

require_once('vendor/autoload.php');

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

Ezután létrehozunk egy változót, amely objektumunk fejléceit tömbként tárolja, ahol a tömb minden egyes eleme egy adott fejléc.

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

Két fejlécet határoztunk meg, egyet a tartalomtípushoz, egyet pedig az API-kulcshoz.

Ezután meghatározhatjuk a kérés törzsét.

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

Ezek után a curl_init() függvény segítségével curl munkamenetet készíthetünk. A függvényhívás argumentumaként átadhatjuk azt az URL-t, amelyre a kérést el szeretnénk küldeni.

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

Most már mindent összeállíthatunk a fejléc és a törzs megadásával a munkamenet opcióiként. Ehhez a curl_setopt_array() függvényt fogjuk használni

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

A kéréshez a curl_exec() függvényt hívjuk meg

$response = curl_exec($ch);

A választ a $response változóban tároltuk, így bezárhatjuk a munkamenetet, hogy felszabadítsuk a munkamenet által használt rendszererőforrásokat.

curl_close($ch);

Végül kinyomtathatjuk a választ a képernyőre a var_dump segítségével.

var_dump($response);

Végül a szkriptfájlnak így kell kinéznie

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

Amikor a szkriptet a php with_curl.php használatával futtatjuk, a következő kimenetet kell kapnia:

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

A kérés sikeresen befejeződött, és az API JSON0 adatokkal válaszolt. Ezeket az adatokat tetszés szerint használhatja.

  Hogyan blokkolhatja a számot a hívásokból és az SMS-ezésből a T-Mobile-on

Guzzle-lel

Az oktatóanyag utolsó részében a Guzzle-t fogjuk használni a forgatókönyv megírásához. Mint mindig, most is a PHP-katalógus beszúrásával kezdjük a with_guzzle.php fájlba

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

Ezután importálhatunk bővítményeket és a Guzzle Client és Request Objects-t, valamint betölthetjük a környezeti változókat.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Ezután betölthetjük a környezeti változókat.

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

Ezt követően példányosíthatunk egy Guzzle HTTP-klienst

$client = new GuzzleHttpClient();

Ezután folytathatjuk a fejlécek létrehozását kérésünkhöz

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

Ezután meghatározhatjuk a kérés törzsét

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

Ezt követően a Request osztály példányosításával és az API végpont URL-jének, fejlécének és törzsének átadásával a kérést elküldhetjük.

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

Ezután a következő kódsor hozzáadásával küldhetjük el a kérést:

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

A kérés elküldése után a kérelem törzsét az alábbiak szerint kaphatjuk meg

$response_body = $response->getBody();

A végén dekódolhatjuk a JSON-választ, és kinyomtathatjuk a betöltési időt

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

Tehát a fájlnak végül így kell kinéznie:

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

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

    $response_body = $response->getBody();

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

És amikor végrehajtja a szkriptet a következő paranccsal:

$php with_guzzle.php

És látni fogja a választ:

Loadtime: 130

Következtetés

Ebben a cikkben áttekintettük azokat a különböző klienseket, amelyeket érdemes használni egy olyan PHP-projekt létrehozásakor, amelyhez a etoppc.com API szükséges.

Míg a projektben szereplő szkriptek a parancssort használják elsődleges kimeneti formaként, a valós projektek megjeleníthetik a választ egy weboldalon, vagy fájlba írhatják. A cikkben szereplő példaszkriptek egyszerűek voltak, de bemutatják a etoppc.com API használatának alapelveit. Különböző API-k használatához módosíthatja a végpontot, és átadhatja a különböző beállításokat a kérés törzsében.

Érdekelheti az is, hogyan használhatja a etoppc.com DNS Lookup API-t Javascriptben.