Jak korzystać z API Geekflare z klientami PHP

Opublikowany: 2022-10-25

W tym przewodniku omówimy różne klienty PHP, których możesz użyć do połączenia się z API Geekflare.

W szczególności omówimy korzystanie z API Geekflare za pomocą funkcji file_get_contents , Guzzle, HTTPful i klienta HTTPS Symfony.

Co to jest API Geekflare?

Geekflare zapewnia zestaw bezpłatnych narzędzi, których możesz użyć do monitorowania wydajności swojej witryny. Narzędzia te obejmują analizator uszkodzonych linków, czas ładowania i sprawdzanie DNS. Dostęp do tych narzędzi można uzyskać online za pośrednictwem interfejsu internetowego lub interfejsu API.

Interfejs API jest oparty na protokole HTTP i można uzyskać do niego dostęp z dowolnego języka programowania z biblioteką klienta HTTP. Interfejs API ma hojny bezpłatny poziom, z którego możesz zacząć korzystać bez konieczności podawania informacji o płatności.

Co będziemy budować

Napiszemy skrypt wykonywalny z wiersza poleceń, który obliczy, ile czasu zajmuje załadowanie strony Google i wydrukowanie jej na terminalu. Zaimplementujemy ten prosty program przy użyciu różnych klientów PHP HTTP, aby zademonstrować, jak wygląda korzystanie z API.

W szczególności użyjemy wbudowanych funkcji – file_get_contents() i php_curl , oraz rozszerzenia Guzzle PHP. Jakkolwiek proste mogą się wydawać te przykłady, pokazują one podstawowe koncepcje korzystania z API Geekflare.

Warunki wstępne

Aby kontynuować, musisz wcześniej znać PHP i zainstalować je na swoim komputerze. Dodatkowo do zarządzania rozszerzeniami potrzebny będzie Composer.

Na koniec będziesz potrzebować edytora tekstu do pisania kodu. W moim przypadku będę używał Visual Studio Code, popularnego edytora tekstu typu open source firmy Microsoft. Możesz go pobrać z witryny Visual Studio Code.

Przegląd API Geekflare

Interfejs API Geekflare ma różne punkty końcowe w zależności od tego, co chcesz zrobić. Pełną listę punktów końcowych i związaną z nimi dokumentację można znaleźć na stronie dokumentacji.

Tworzenie konta Geekflare

Aby rozpocząć korzystanie z API, musisz utworzyć konto, przechodząc do strony docelowej API i klikając przycisk rejestracji. Po zakończeniu rejestracji zostaniesz przeniesiony do pulpitu nawigacyjnego, gdzie zobaczysz swój klucz API. Deska rozdzielcza powinna wyglądać jak na poniższym obrazku. Mój klucz API został zaciemniony ze względów bezpieczeństwa.

Geekflare-Dashboard-1

W każdym żądaniu API musisz podać ten klucz jako nagłówek żądania. Wkrótce zobaczysz, jak można to zrobić.

Po utworzeniu konta Geekflare i zainstalowaniu PHP możemy rozpocząć tworzenie projektu.

Tworzenie folderu projektu

Najpierw utwórz folder, w którym będziemy przechowywać pliki projektu. Następnie utwórz następujące pliki

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

Następnie uruchom następujące polecenie, aby zainstalować rozszerzenie vlucas/phpdotenv i guzzlehttp/guzzle

 composer require vlucas/phpdotenv guzzlehttp/guzzle

W tym momencie folder twojego projektu powinien wyglądać tak:

Zrzut ekranu z 2022-10-17-10-55-35

Teraz otwórz plik .env i dodaj następujący wiersz kodu, zastępując <your-api-key> rzeczywistym kluczem API z pulpitu nawigacyjnego Geekflare:

 API_KEY=<your-api-key>

Korzystanie z file_get_contents()

Pierwszą metodą, której możemy użyć do tworzenia żądań HTTP, jest wywołanie funkcji file_get_contents() wbudowanej w PHP. Sygnatura funkcji funkcji file_get_contents() wygląda następująco:

 file_get_contents(path, include_path, context)

Chociaż metoda ta jest często używana do odczytywania zawartości pliku w pamięci lokalnej, możemy jej użyć do odczytania zasobu sieciowego, takiego jak dane zwrócone przez punkt końcowy API.

Teraz, aby rozpocząć, otwórz with_file_get_contents.php i dodaj standardowy kod PHP.

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

Następnie możemy zacząć od wczytywania rozszerzeń. Dodaj następujący wiersz kodu do swojego pliku

 require_once('vendor/autoload.php');

Następnie możemy załadować nasze zmienne środowiskowe, w tym klucz API

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

Następnie możemy zdefiniować ładunek. Będą to dane, które wyślemy w ramach treści żądania

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

Stworzyliśmy zmienną ładunku i przypisaliśmy ją do ciągu JSON zawierającego właściwości url , proxyCountry i followRedirect .

Właściwość url określa stronę, której czas ładowania chcemy sprawdzić.

proxyCountry to lokalizacja serwera, którego chcemy użyć do wysłania żądania. W tym przypadku korzystamy z serwera USA, ale możesz wybierać spośród Indii, Chin, Wielkiej Brytanii i Francji. Możesz przeczytać dokumentację, aby uzyskać więcej informacji.

Następnie followRedirect określa, czy serwer proxy powinien podążać za jakimikolwiek przekierowaniami i mierzyć czas odpowiedzi końcowej odpowiedzi lub pierwszego przekierowania.

Następnie możemy stworzyć opcje, które skonfigurują nasze żądanie, dodając ten kod:

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

W ten sposób utworzyliśmy obiekt options, który określa, że ​​nasza metoda HTTP to POST, i mamy nagłówek, który określa dwie właściwości, typ zawartości jako JSON i x-api-key jako klucz API określony w .env i został załadowany jako zmienna środowiskowa.

Następnie możemy złożyć żądanie, tworząc strumień, w którym zostaną zapisane nasze opcje:

 $context = stream_context_create($options);

Następnie wywołujemy metodę file_get_contents() , aby wykonać żądanie i zapisać odpowiedź jako zmienną.

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

Złożyliśmy prośbę do https://api.geekflare.com/loadtime . Fałsz mówi PHP, aby nie używał ścieżki. I przekazujemy stworzony przez nas kontekst do metody.

Aby wyświetlić odpowiedź, użyjemy danych wyjściowych w następujący sposób.

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

Na końcu twój plik powinien wyglądać tak:

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

Po uruchomieniu pliku za pomocą następującego polecenia:

 php with_file_get_contents.php

Otrzymasz następujące dane wyjściowe

 Loadtime: 81

Korzystanie z cURL

cURL to narzędzie wiersza poleceń, które służy do wysyłania żądań URL po stronie klienta. W PHP można go używać za pomocą narzędzia php-curl. Aby zacząć z niego korzystać, otwórz plik with_curl.php i napisz szablon PHP

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

Następnie zaimportujmy rozszerzenia i załadujmy zmienną środowiskową API_KEY zdefiniowaną w pliku .env

 require_once('vendor/autoload.php'); $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load();

Następnie utworzymy zmienną do przechowywania nagłówków naszego obiektu jako tablicę, w której każdy pojedynczy element tablicy jest określonym nagłówkiem.

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

Zdefiniowaliśmy dwa nagłówki, jeden dla typu zawartości i jeden dla klucza API.

Następnie możemy zdefiniować treść żądania.

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

Następnie możemy utworzyć sesję curl za pomocą funkcji curl_init() . Możemy przekazać adres URL, do którego chcemy skierować żądanie, jako argument do wywołania funkcji.

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

Teraz możemy wszystko złożyć razem, definiując nagłówek i treść jako opcje sesji. W tym celu użyjemy funkcji curl_setopt_array()

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

Aby wykonać żądanie, wywołamy funkcję curl_exec()

 $response = curl_exec($ch);

Przechowaliśmy odpowiedź w zmiennej $response , więc możemy zamknąć sesję, aby zwolnić zasoby systemowe używane przez sesję.

 curl_close($ch);

Na koniec możemy wydrukować odpowiedź na ekranie za pomocą var_dump .

 var_dump($response);

W końcu twój plik skryptu powinien wyglądać tak

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

Kiedy uruchamiamy skrypt przy użyciu php with_curl.php , powinieneś otrzymać następujące wyjście:

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

Żądanie zostało zakończone pomyślnie, a interfejs API odpowiedział danymi JSON0. Możesz wykorzystać te dane, jak chcesz.

Z Guzzlem

W ostatniej części tego samouczka użyjemy Guzzle do napisania skryptu. Jak zawsze zaczynamy od wstawienia szablonu PHP do with_guzzle.php

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

Następnie możemy zaimportować rozszerzenia oraz klienta Guzzle i obiekty żądania oraz załadować zmienne środowiskowe.

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

Następnie możemy załadować zmienne środowiskowe.

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

Następnie możemy utworzyć instancję klienta HTTP Guzzle

 $client = new GuzzleHttp\Client();

Następnie możemy przystąpić do tworzenia nagłówków dla naszego żądania

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

Następnie możemy zdefiniować treść żądania

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

Następnie możemy wykonać żądanie, tworząc instancję klasy Request i przekazując adres URL punktu końcowego API, nagłówek i treść.

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

Następnie możemy wysłać żądanie, dodając następujący wiersz kodu:

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

Po wysłaniu żądania możemy otrzymać jego treść w następujący sposób

 $response_body = $response->getBody();

Na koniec możemy rozszyfrować odpowiedź JSON i wydrukować czas ładowania

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

Ostatecznie więc plik powinien wyglądać tak:

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

A kiedy wykonasz skrypt za pomocą następującego polecenia:

 $php with_guzzle.php

I zobaczysz odpowiedź:

 Loadtime: 130

Wniosek

W tym artykule omówiliśmy różnych klientów, których możesz chcieć użyć podczas tworzenia projektu PHP, który będzie wymagał interfejsu API Geekflare.

Podczas gdy skrypty w tym projekcie używają wiersza poleceń jako podstawowej formy danych wyjściowych, projekty w świecie rzeczywistym mogą przedstawiać odpowiedź na stronie internetowej lub zapisywać ją w pliku. Przykładowe skrypty w tym artykule były proste, ale demonstrują podstawowe koncepcje korzystania z interfejsu API Geekflare. Aby korzystać z różnych interfejsów API, możesz zmienić punkt końcowy i przekazać różne opcje w treści żądania.

Możesz być także zainteresowany tym, jak korzystać z API wyszukiwania Geekflare DNS w JavaScript.