Cum să utilizați API-ul Geekflare cu clienți PHP

Publicat: 2022-10-25

În acest ghid, vom parcurge diferiții clienți PHP pe care îi puteți folosi pentru a vă conecta la API-ul Geekflare.

Mai exact, vom acoperi utilizarea API-ului Geekflare cu funcția file_get_contents , Guzzle, HTTPful și clientul HTTPS Symfony.

Ce este API-ul Geekflare?

Geekflare oferă un set de instrumente gratuite pe care le puteți utiliza pentru a monitoriza performanța site-ului dvs. Aceste instrumente includ un analizor de legături întrerupte, timpul de încărcare și un verificator DNS. Aceste instrumente pot fi accesate online prin interfața web sau API.

API-ul se bazează pe HTTP și poate fi accesat din orice limbaj de programare cu o bibliotecă client HTTP. API-ul are un nivel generos gratuit pe care îl puteți începe să îl utilizați fără a fi nevoie să furnizați informații de plată.

Ceea ce vom construi

Vom scrie un script, executabil din linia de comandă, care va calcula cât timp durează încărcarea site-ului web Google și imprimarea acestora pe terminal. Vom implementa acest program simplu folosind diferiți clienți PHP HTTP pentru a demonstra cum arată utilizarea API-ului.

Mai exact, vom folosi funcțiile încorporate – file_get_contents() și php_curl și extensia Guzzle PHP. Oricât de simple ar părea aceste exemple, ele demonstrează conceptele de bază ale utilizării API-ului Geekflare.

Cerințe preliminare

Pentru a continua, va trebui să cunoașteți PHP în prealabil și să îl instalați pe computer. În plus, veți avea nevoie de Composer pentru a gestiona extensiile.

În cele din urmă, veți avea nevoie și de un editor de text în care să scrieți codul. În cazul meu, voi folosi Visual Studio Code, un popular editor de text open-source de la Microsoft. Îl puteți descărca de pe site-ul web Visual Studio Code.

Prezentare generală a API-ului Geekflare

API-ul Geekflare are puncte finale diferite în funcție de ceea ce doriți să faceți. Lista completă a punctelor finale și documentația asociată acestora pot fi găsite pe pagina de documentație.

Crearea unui cont Geekflare

Pentru a începe să utilizați API-ul, va trebui să vă creați un cont accesând pagina de destinație API și făcând clic pe butonul de înregistrare. După finalizarea înscrierii, veți fi direcționat la tabloul de bord, unde veți vedea cheia dvs. API. Tabloul de bord ar trebui să fie ca în imaginea de mai jos. Mi-am dezactivat cheia API din motive de securitate.

Geekflare-Tabloul de bord-1

În fiecare solicitare API pe care o faceți, va trebui să furnizați această cheie ca antet de solicitare. În scurt timp, veți vedea cum se poate face acest lucru.

Cu un cont Geekflare creat și PHP instalat, putem începe să creăm proiectul.

Crearea folderului de proiect

Mai întâi, creați un folder în care vom stoca fișierele de proiect. După aceea, creați următoarele fișiere

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

După aceea, rulați următoarea comandă pentru a instala vlucas/phpdotenv și guzzlehttp/guzzle

 composer require vlucas/phpdotenv guzzlehttp/guzzle

În acest moment, folderul dvs. de proiect ar trebui să arate astfel:

Captură de ecran din 2022-10-17-10-55-35

Acum deschideți fișierul .env și adăugați următoarea linie de cod, înlocuind <your-api-key> cu cheia API reală din tabloul de bord Geekflare:

 API_KEY=<your-api-key>

Folosind file_get_contents()

Prima metodă pe care am putea-o folosi pentru a face cereri HTTP este să apelăm funcția file_get_contents() care este încorporată în PHP. Semnătura funcției a funcției file_get_contents() este următoarea:

 file_get_contents(path, include_path, context)

În timp ce metoda este adesea folosită pentru a citi conținutul unui fișier în stocarea locală, o putem folosi pentru a citi o resursă web, cum ar fi datele returnate de un punct final API.

Acum, pentru a începe, deschideți with_file_get_contents.php și adăugați codul PHP standard.

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

În continuare, putem începe cu încărcarea extensiilor. Adăugați următoarea linie de cod în fișierul dvs

 require_once('vendor/autoload.php');

Apoi, putem încărca variabilele noastre de mediu, care includ cheia API

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

Apoi, putem defini sarcina utilă. Acestea vor fi date pe care le vom trimite ca parte a organismului de solicitare

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

Am creat o variabilă de sarcină utilă și am atribuit-o unui șir JSON care conține url , proxyCountry și followRedirect ca proprietăți.

Proprietatea url specifică pagina web al cărei timp de încărcare dorim să verificăm.

proxyCountry este locația serverului pe care dorim să-l folosim pentru a face cererea. În acest caz, folosim serverul SUA, dar puteți alege din India, China, Marea Britanie și Franța. Puteți citi documentația pentru mai multe detalii.

Apoi followRedirect specifică dacă serverul proxy ar trebui să urmeze orice redirecționare și să măsoare timpul de răspuns al răspunsului final sau al primei redirecționări.

După aceea, putem crea opțiuni care vor configura solicitarea noastră adăugând acest cod:

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

Făcând acest lucru, am creat un obiect opțiuni care specifică că metoda noastră HTTP este POST și avem un antet care specifică două proprietăți, tipul de conținut ca JSON și x-api-key ca cheie API pe care ați specificat-o în .env și a fost încărcat ca variabilă de mediu.

Apoi, putem face cererea creând un flux în care opțiunile noastre vor fi scrise în:

 $context = stream_context_create($options);

Apoi, apelăm metoda file_get_contents() pentru a face cererea și a stoca răspunsul ca variabilă.

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

Am făcut cererea la https://api.geekflare.com/loadtime . False îi spune PHP să nu folosească calea. Și trecem contextul pe care l-am creat la metodă.

Pentru a afișa răspunsul, vom folosi rezultatul după cum urmează.

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

La sfârșitul acesteia, fișierul dvs. 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.geekflare.com/loadtime", false, $context); echo "Loadtime: " . json_decode($response)->data->total . "\n"; ?>

Când rulați fișierul folosind următoarea comandă:

 php with_file_get_contents.php

Veți obține următoarea ieșire

 Loadtime: 81

Folosind cURL

cURL este un utilitar de linie de comandă care este utilizat pentru a face solicitări de adrese URL pe partea clientului. În PHP, poate fi folosit folosind utilitarul php-curl. Pentru a începe să îl utilizați, deschideți fișierul with_curl.php și scrieți boilerplate PHP

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

Apoi, să importăm extensii și să î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();

În continuare, vom crea o variabilă pentru a stoca anteturile obiectului nostru ca o matrice în care fiecare element individual din matrice 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 putem defini corpul cererii.

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

După aceasta, putem crea o sesiune curl folosind funcția curl_init() . Putem transmite adresa URL la care vrem să facem cererea ca argument pentru apelul funcției.

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

Acum putem pune totul împreună definind antetul și corpul ca opțiuni pentru sesiune. Pentru aceasta, vom folosi funcția curl_setopt_array() .

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

Pentru a face cererea, vom apela curl_exec() .

 $response = curl_exec($ch);

Am stocat răspunsul în variabila $response , astfel încât să putem închide sesiunea pentru a elibera resursele de sistem folosite de sesiune.

 curl_close($ch);

În cele din urmă, putem imprima răspunsul pe ecran folosind var_dump .

 var_dump($response);

În cele din urmă, fișierul dvs. de script ar trebui să arate așa

 <?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); ?>

Când rulăm scriptul folosind php with_curl.php , ar trebui să obțineți 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 răspuns cu date JSON0. Puteți utiliza aceste date după cum doriți.

Cu Guzzle

În ultima parte a acestui tutorial, vom folosi Guzzle pentru a scrie scenariul. Ca întotdeauna, începem prin a introduce placa PHP în interiorul with_guzzle.php

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

Apoi, putem importa extensii și Guzzle Client și Request Objects și putem încărca variabile de mediu.

 require_once('vendor/autoload.php'); use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request;

Apoi, putem încărca variabilele de mediu.

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

Ulterior, putem instanția un client HTTP Guzzle

 $client = new GuzzleHttp\Client();

Apoi putem continua la crearea antetelor pentru cererea noastră

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

În continuare, putem defini corpul cererii

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

Apoi putem face cererea prin instanțierea clasei Request și transmiterea adresei URL a punctului final al API, antetul și corpul.

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

Apoi putem trimite cererea adăugând această linie de cod:

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

Odată ce cererea a fost trimisă, putem primi corpul cererii după cum urmează

 $response_body = $response->getBody();

În cele din urmă, putem decoda răspunsul JSON și tipări timpul de încărcare

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

Deci, în cele din urmă, fișierul 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 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"; ?>

Și când executați scriptul folosind următoarea comandă:

 $php with_guzzle.php

Și vei vedea răspunsul:

 Loadtime: 130

Concluzie

În acest articol, am analizat diferiții clienți pe care poate doriți să îi utilizați atunci când creați un proiect PHP care va necesita API-ul Geekflare.

În timp ce scripturile din acest proiect folosesc linia de comandă ca formă principală de ieșire, proiectele din lumea reală ar putea prezenta răspunsul pe o pagină web sau îl pot scrie într-un fișier. Exemplele de scripturi din acest articol au fost simple, dar demonstrează conceptele de bază ale utilizării API-ului Geekflare. Pentru a utiliza diferite API-uri, puteți modifica punctul final și puteți transmite diferite opțiuni în corpul solicitării.

Ați putea fi, de asemenea, interesat de cum să utilizați Geekflare DNS Lookup API în Javascript.