Explorarea interacțiunilor cu API-ul tipstrick.ro folosind clienți PHP
Acest ghid detaliază diversele modalități prin care poți utiliza clienți PHP pentru a interacționa cu API-ul tipstrick.ro. Vom explora, în mod specific, cum să folosești acest API prin intermediul funcției `file_get_contents`, a bibliotecii Guzzle, a HTTPful și a clientului HTTPS Symfony.
Ce este, mai exact, API-ul tipstrick.ro?
tipstrick.ro oferă un set de instrumente gratuite, concepute pentru monitorizarea eficienței site-ului tău web. Aceste instrumente includ un analizor de link-uri defecte, un indicator al timpului de încărcare și un verificator DNS. Poți accesa aceste facilități fie direct prin interfața web, fie prin intermediul API-ului. API-ul folosește protocolul HTTP și este accesibil din orice limbaj de programare care dispune de o bibliotecă client HTTP. Un avantaj major este nivelul gratuit, care îți permite să începi utilizarea fără a fi nevoie de date de plată.
Ce vom crea în acest ghid?
Vom dezvolta un script, executabil din linia de comandă, care va măsura timpul de încărcare al site-ului web Google și va afișa această informație în terminal. Această sarcină simplă va fi implementată folosind diferiți clienți HTTP PHP, ilustrând diverse metode de interacțiune cu API-ul. Mai exact, vom folosi funcțiile integrate `file_get_contents()` și `php_curl`, precum și extensia Guzzle PHP. Chiar dacă aceste exemple sunt simple, ele vor evidenția conceptele fundamentale ale utilizării API-ului tipstrick.ro.
Cerințe preliminare
Pentru a putea urmări acest ghid, este necesar să ai cunoștințe de bază în PHP și să ai PHP instalat pe sistemul tău. De asemenea, vei avea nevoie de Composer pentru a gestiona dependențele. Un editor de text pentru scrierea codului este de asemenea necesar. Personal, voi utiliza Visual Studio Code, un editor open-source popular de la Microsoft, pe care îl poți descărca de pe site-ul său oficial.
O privire de ansamblu asupra API-ului tipstrick.ro
API-ul tipstrick.ro dispune de diverse puncte finale, fiecare dedicat unei funcții specifice. Lista completă a acestor puncte finale și documentația aferentă sunt disponibile pe pagina de documentație.
Crearea unui cont tipstrick.ro
Pentru a începe să utilizezi API-ul, va trebui să îți creezi un cont accesând pagina dedicată API-ului și dând click pe butonul de înregistrare. După finalizarea procesului de înregistrare, vei fi redirecționat către tabloul de bord, unde vei găsi cheia ta API. Imaginea de mai jos prezintă cum arată tabloul de bord (am dezactivat cheia API din motive de securitate). Această cheie API va trebui să fie inclusă în fiecare solicitare pe care o faci către API, ca antet. Îți voi arăta imediat cum se face acest lucru.
Acum că ai un cont tipstrick.ro și PHP instalat, putem începe configurarea proiectului.
Crearea folderului de proiect
Începe prin a crea un director în care vei stoca fișierele proiectului. În acest director, creează următoarele fișiere:
- .env
- cu_curl.php
- with_file_get_contents.php
- cu_guzzle.php
După ce ai creat fișierele, rulează următoarea comandă pentru a instala extensiile `vlucas/phpdotenv` și `guzzlehttp/guzzle`:
composer require vlucas/phpdotenv guzzlehttp/guzzle
În acest moment, structura folderului tău de proiect ar trebui să arate similar cu:
Acum, deschide fișierul `.env` și adaugă următoarea linie, înlocuind `
API_KEY=<your-api-key>
Utilizarea funcției `file_get_contents()`
Prima metodă pe care o vom examina pentru a face cereri HTTP este apelul funcției integrate `file_get_contents()`. Această funcție are următoarea sintaxă:
file_get_contents(path, include_path, context)
Deși funcția este frecvent folosită pentru a citi conținutul unui fișier local, o putem folosi și pentru a citi datele returnate de un punct final API. Pentru a începe, deschide fișierul `with_file_get_contents.php` și adaugă codul PHP standard:
<?php // Toată logica va fi inserată aici ?>
Apoi, vom încărca extensiile necesare prin adăugarea următoarei linii:
require_once('vendor/autoload.php');
Continuăm prin a încărca variabilele de mediu, inclusiv cheia API:
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load();
Acum putem defini sarcina utilă (payload), adică datele pe care le vom trimite ca parte a corpului solicitării:
$payload = json_encode([ "url" => "https://www.google.com", "proxyCountry" => "us", "followRedirect" => true ]);
Am creat o variabilă `payload`, căreia i-am atribuit un șir JSON ce conține proprietățile `url`, `proxyCountry` și `followRedirect`. Proprietatea `url` indică pagina web al cărei timp de încărcare dorim să îl verificăm. `proxyCountry` specifică locația serverului utilizat pentru a face solicitarea. În acest caz, folosim un server din SUA, dar poți alege și din India, China, Marea Britanie sau Franța. `followRedirect` specifică dacă serverul proxy trebuie să urmărească redirecționările și să măsoare timpul de răspuns final sau cel al primei redirecționări.
În continuare, vom crea opțiunile care vor configura solicitarea, adăugând următorul cod:
$options = [ "http" => [ "method" => "POST", "header" => array("Content-Type: application/json", "x-api-key : " . $_ENV['API_KEY']), "content" => $payload ] ];
Am creat un obiect `options`, care specifică faptul că metoda HTTP este `POST` și include un antet cu două proprietăți: tipul de conținut JSON și cheia API, preluată din variabilele de mediu.
Putem iniția o solicitare creând un flux în care vor fi scrise opțiunile noastre:
$context = stream_context_create($options);
Apoi, folosim metoda `file_get_contents()` pentru a face solicitarea și a stoca răspunsul într-o variabilă:
$response = file_get_contents("https://api.tipstrick.ro.com/loadtime", false, $context);
Am efectuat solicitarea la adresa `https://api.tipstrick.ro.com/loadtime`. Al doilea argument al funcției, `false`, indică faptul că nu se va folosi calea, iar al treilea argument este contextul creat.
Pentru a afișa răspunsul, vom folosi următorul cod:
echo "Loadtime: " . json_decode($response)->data->total . "n";
La final, fișierul tău ar trebui să arate astfel:
<?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.tipstrick.ro.com/loadtime", false, $context); echo "Loadtime: " . json_decode($response)->data->total . "n"; ?>
Când rulezi fișierul utilizând comanda:
php with_file_get_contents.php
Vei obține următorul rezultat:
Loadtime: 81
Utilizarea cURL
cURL este un utilitar de linie de comandă folosit pentru a face solicitări URL din partea clientului. În PHP, poate fi folosit prin intermediul extensiei `php-curl`. Pentru a începe, deschide fișierul `with_curl.php` și scrie codul PHP de bază:
<?php // Tot codul nou va fi scris aici ?>
Importăm extensiile și încărcăm variabila de mediu `API_KEY` definită în fișierul `.env`:
require_once('vendor/autoload.php'); $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load();
Vom crea o variabilă pentru a stoca anteturile obiectului ca o matrice, unde fiecare element este un antet specific:
$header = ["Content-type: application/json", "x-api-key: " . $_ENV['API_KEY']];
Am definit două anteturi: unul pentru tipul de conținut și unul pentru cheia API.
Apoi, definim corpul solicitării:
$body = json_encode([ "url" => "google.com", "proxyCountry" => "us", "followRedirect" => true ]);
După aceasta, creăm o sesiune curl folosind funcția `curl_init()`. Vom transmite adresa URL la care dorim să facem solicitarea ca argument:
$ch = curl_init("https://api.tipstrick.ro.com/loadtime");
Acum putem reuni toate componentele definind antetul și corpul ca opțiuni pentru sesiune, folosind funcția `curl_setopt_array()`:
curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_HTTPHEADER => $header, CURLOPT_POSTFIELDS => $body ]);
Pentru a face solicitarea, vom apela funcția `curl_exec()`:
$response = curl_exec($ch);
Am stocat răspunsul în variabila `$response`, apoi închidem sesiunea pentru a elibera resursele sistemului:
curl_close($ch);
În final, afișăm răspunsul pe ecran folosind `var_dump`:
var_dump($response);
În final, fișierul tău ar trebui să arate astfel:
<?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.tipstrick.ro.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); ?>
Când rulezi scriptul folosind comanda `php with_curl.php`, ar trebui să obții următoarea ieșire:
{"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)
Solicitarea a fost finalizată cu succes, iar API-ul a returnat date JSON. Acum poți folosi aceste date conform necesităților.
Utilizarea Guzzle
În ultima parte a acestui tutorial, vom folosi Guzzle pentru a scrie scriptul. Ca de obicei, începem prin adăugarea codului PHP de bază în fișierul `with_guzzle.php`:
<?php // Tot codul va fi scris aici ?>
Apoi importăm extensiile și obiectele `Guzzle Client` și `Request` și încărcăm variabilele de mediu:
require_once('vendor/autoload.php'); use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request;
Încărcăm variabilele de mediu:
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load();
Ulterior, instanțiem un client HTTP Guzzle:
$client = new Client();
Continuăm creând antetul pentru solicitarea noastră:
$headers = [ 'x-api-key' => $_ENV['API_KEY'], 'Content-Type' => 'application/json' ];
Definim corpul solicitării:
$body = json_encode([ "url" => "google.com", "proxyCountry" => "us", "followRedirect" => true ]);
Apoi, efectuăm solicitarea instanțiind clasa `Request` și transmitând adresa URL a punctului final API, antetul și corpul solicitării:
$request = new Request('POST', 'https://api.tipstrick.ro.com/loadtime', $headers, $body);
Trimitem solicitarea cu următoarea linie de cod:
$response = $client->sendAsync($request)->wait();
Odată ce solicitarea a fost trimisă, putem primi corpul răspunsului:
$response_body = $response->getBody();
În final, decodăm răspunsul JSON și tipărim timpul de încărcare:
echo "Loadtime: " . json_decode($response_body)->data->total . "n";
Astfel, fișierul tău ar trebui să arate astfel:
<?php require_once('vendor/autoload.php'); use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request; $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load(); $client = new 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.tipstrick.ro.com/loadtime', $headers, $body); $response = $client->sendAsync($request)->wait(); $response_body = $response->getBody(); echo "Loadtime: " . json_decode($response_body)->data->total . "n"; ?>
Când rulezi scriptul cu comanda:
php with_guzzle.php
Vei vedea următorul rezultat:
Loadtime: 130
Concluzie
În acest articol, am analizat diferiți clienți PHP pe care îi poți utiliza când creezi un proiect care necesită interacțiunea cu API-ul tipstrick.ro. Deși scripturile din acest proiect folosesc linia de comandă ca metodă principală de afișare a rezultatelor, în proiectele din viața reală, răspunsul poate fi prezentat pe o pagină web sau poate fi salvat într-un fișier. Scripturile prezentate aici au fost simple, dar ilustrează conceptele de bază ale interacțiunii cu API-ul tipstrick.ro. Pentru a utiliza alte puncte finale API, poți modifica adresa URL și trimite diverse opțiuni în corpul solicitării.
De asemenea, ar putea să te intereseze cum se folosește API-ul tipstrick.ro DNS Lookup în Javascript.