PHP istemcileri ile Geekflare API Nasıl Kullanılır

Yayınlanan: 2022-10-25

Bu kılavuzda, Geekflare API'sine bağlanmak için kullanabileceğiniz farklı PHP istemcilerini inceleyeceğiz.

Spesifik olarak, Geekflare API'sini file_get_contents işlevi, Guzzle, HTTPful ve Symfony'nin HTTPS istemcisi ile kullanmayı ele alacağız.

Geekflare API'si nedir?

Geekflare, web sitenizin performansını izlemek için kullanabileceğiniz bir dizi ücretsiz araç sağlar. Bu araçlar, bozuk bir bağlantı analizörü, yükleme süresi ve bir DNS denetleyicisi içerir. Bu araçlara web arayüzü veya API aracılığıyla çevrimiçi olarak erişilebilir.

API, HTTP'ye dayalıdır ve bir HTTP istemci kitaplığı ile herhangi bir programlama dilinden erişilebilir. API, ödeme bilgisi vermenize gerek kalmadan kullanmaya başlayabileceğiniz cömert bir ücretsiz katmana sahiptir.

Ne inşa edeceğiz

Google web sitesini yüklemenin ve bunları terminale yazdırmanın ne kadar süreceğini hesaplayacak, komut satırından yürütülebilir bir komut dosyası yazacağız. API kullanmanın neye benzediğini göstermek için bu basit programı farklı PHP HTTP istemcileri kullanarak uygulayacağız.

Spesifik olarak, yerleşik işlevleri - file_get_contents() ve php_curl ve Guzzle PHP uzantısını kullanacağız. Bu örnekler ne kadar basit görünse de, Geekflare API'sini kullanmanın temel kavramlarını gösterirler.

Önkoşullar

Devam etmek için, önceden PHP bilmeniz ve bilgisayarınızda kurulu olması gerekir. Ek olarak, uzantıları yönetmek için Composer'a ihtiyacınız olacak.

Son olarak, kod yazmak için bir metin düzenleyiciye de ihtiyacınız olacak. Benim durumumda, Microsoft'un popüler bir açık kaynaklı metin düzenleyicisi olan Visual Studio Code'u kullanacağım. Visual Studio Code web sitesinden indirebilirsiniz.

Geekflare API'ye genel bakış

Geekflare API, ne yapmak istediğinize bağlı olarak farklı uç noktalara sahiptir. Uç noktaların tam listesi ve bunlarla ilişkili belgeler, belgeler sayfasında bulunabilir.

Geekflare hesabı oluşturma

API'yi kullanmaya başlamak için API açılış sayfasına gidip kayıt düğmesine tıklayarak bir hesap oluşturmanız gerekir. Kayıt işlemi tamamlandıktan sonra, API anahtarınızı göreceğiniz panoya yönlendirileceksiniz. Gösterge paneli aşağıdaki resimdeki gibi olmalıdır. Güvenlik nedeniyle API anahtarımı kararttım.

Geekflare-Dashboard-1

Yaptığınız her API isteğinde, bu anahtarı istek başlığı olarak sağlamanız gerekecektir. Kısa bir süre sonra bunun nasıl yapılabileceğini göreceksiniz.

Oluşturulan bir Geekflare hesabı ve PHP kurulumu ile projeyi oluşturmaya başlayabiliriz.

Proje klasörü oluşturma

Öncelikle proje dosyalarını depolayacağımız bir klasör oluşturun. Bundan sonra, aşağıdaki dosyaları oluşturun

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

Ardından, vlucas/phpdotenv ve guzzlehttp/guzzle guzzle uzantısını yüklemek için aşağıdaki komutu çalıştırın.

 composer require vlucas/phpdotenv guzzlehttp/guzzle

Bu noktada proje klasörünüz şöyle görünmelidir:

Ekran görüntüsü-den-2022-10-17-10-55-35

Şimdi .env dosyasını açın ve aşağıdaki kod satırını ekleyin, <your-api-key> öğesini Geekflare panosundaki gerçek API anahtarınızla değiştirin:

 API_KEY=<your-api-key>

file_get_contents()'i kullanma

HTTP istekleri yapmak için kullanabileceğimiz ilk yöntem, PHP'de yerleşik olan file_get_contents() işlevini çağırmaktır. file_get_contents() işlevinin işlev imzası aşağıdaki gibidir:

 file_get_contents(path, include_path, context)

Yöntem genellikle yerel depolamadaki bir dosyanın içeriğini okumak için kullanılsa da, bir API uç noktası tarafından döndürülen veriler gibi bir web kaynağını okumak için bunu kullanabiliriz.

Şimdi başlamak için with_file_get_contents.php açın ve ortak PHP kodunu ekleyin.

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

Ardından, uzantıları yüklemeye başlayabiliriz. Dosyanıza aşağıdaki kod satırını ekleyin

 require_once('vendor/autoload.php');

Ardından, API anahtarını içeren çevresel değişkenlerimizi yükleyebiliriz.

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

Ardından, yükü tanımlayabiliriz. Bu, istek gövdesinin bir parçası olarak göndereceğimiz veriler olacaktır.

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

Bir payload değişkeni oluşturduk ve onu, özellikler olarak url , proxyCountry ve followRedirect içeren bir JSON dizesine atadık.

url özelliği, yükleme süresini kontrol etmek istediğimiz web sayfasını belirtir.

proxyCountry , istekte bulunmak için kullanmak istediğimiz sunucunun konumudur. Bu durumda ABD sunucusunu kullanıyoruz, ancak Hindistan, Çin, İngiltere ve Fransa arasından seçim yapabilirsiniz. Daha fazla ayrıntı için belgeleri okuyabilirsiniz.

Ardından followRedirect , proxy sunucusunun herhangi bir yeniden yönlendirmeyi izlemesi gerekip gerekmediğini ve son yanıtın mı yoksa ilk yeniden yönlendirmenin mi yanıt süresini ölçmesi gerektiğini belirtir.

Daha sonra bu kodu ekleyerek isteğimizi yapılandıracak seçenekler oluşturabiliriz:

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

Bunu yaparak, HTTP yöntemimizin POST olduğunu belirten bir options nesnesi oluşturduk ve içerik türünü JSON ve x-api-key belirttiğiniz API anahtarı olarak iki özelliği belirten bir başlığımız var. .env dosyasıdır ve bir çevresel değişken olarak yüklenmiştir.

Ardından, seçeneklerimizin yazılacağı bir akış oluşturarak istekte bulunabiliriz:

 $context = stream_context_create($options);

Ardından, isteği yapmak ve yanıtı bir değişken olarak saklamak için file_get_contents() yöntemini çağırırız.

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

https://api.geekflare.com/loadtime istekte bulunduk. false PHP'ye yolu kullanmamasını söyler. Ve oluşturduğumuz bağlamı methoda aktarıyoruz.

Yanıtı görüntülemek için çıktıyı aşağıdaki gibi kullanacağız.

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

Bunun sonunda dosyanız şöyle görünmelidir:

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

Aşağıdaki komutu kullanarak dosyayı çalıştırdığınızda:

 php with_file_get_contents.php

Aşağıdaki çıktıyı alacaksınız

 Loadtime: 81

cURL'yi kullanma

cURL, istemci tarafı URL istekleri yapmak için kullanılan bir komut satırı yardımcı programıdır. PHP'de php-curl yardımcı programı kullanılarak kullanılabilir. Kullanmaya başlamak için, with_curl.php dosyasını açın ve ortak PHP kodunu yazın.

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

Ardından uzantıları içe aktaralım ve .env dosyasında tanımlanan API_KEY çevresel değişkenini yükleyelim.

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

Ardından, dizideki her bir elemanın belirli bir başlık olduğu bir dizi olarak nesnemizin başlıklarını saklamak için bir değişken oluşturacağız.

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

Biri içerik türü için diğeri API anahtarı için olmak üzere iki başlık tanımladık.

Ardından isteğin gövdesini tanımlayabiliriz.

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

Bundan sonra curl_init() fonksiyonunu kullanarak bir curl oturumu oluşturabiliriz. İsteği yapmak istediğimiz URL'yi işlev çağrısına argüman olarak iletebiliriz.

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

Artık oturum için seçenekler olarak başlık ve gövdeyi tanımlayarak her şeyi bir araya getirebiliriz. Bunun için curl_setopt_array() fonksiyonunu kullanacağız.

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

İsteği yapmak için curl_exec() işlevini çağıracağız.

 $response = curl_exec($ch);

Yanıtı $response değişkeninde sakladık, böylece oturum tarafından kullanılan sistem kaynaklarını boşaltmak için oturumu kapatabiliriz.

 curl_close($ch);

Son olarak var_dump kullanarak ekrana cevabı yazdırabiliriz.

 var_dump($response);

Sonunda, komut dosyanız şöyle görünmelidir

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

Komut dosyasını php with_curl.php kullanarak çalıştırdığımızda aşağıdaki çıktıyı almalısınız:

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

İstek başarıyla tamamlandı ve API, JSON0 verileriyle yanıt verdi. Bu verileri istediğiniz gibi kullanabilirsiniz.

Guzzle ile

Bu öğreticinin son bölümünde, komut dosyasını yazmak için Guzzle'ı kullanacağız. Her zaman olduğu gibi, with_guzzle.php içine PHP ortak plakasını ekleyerek başlıyoruz.

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

Ardından, uzantıları ve Guzzle İstemcisini ve İstek Nesnelerini içe aktarabilir ve çevresel değişkenleri yükleyebiliriz.

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

Ardından, çevresel değişkenleri yükleyebiliriz.

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

Daha sonra, bir Guzzle HTTP istemcisi başlatabiliriz

 $client = new GuzzleHttp\Client();

Ardından isteğimiz için başlıklar oluşturmaya devam edebiliriz.

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

Ardından, isteğin gövdesini tanımlayabiliriz

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

Ardından, Request sınıfını başlatarak ve API bitiş noktası URL'sini, başlığını ve gövdesini ileterek istekte bulunabiliriz.

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

Ardından, bu kod satırını ekleyerek isteği gönderebiliriz:

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

Talep gönderildikten sonra, talebin metnini aşağıdaki gibi alabiliriz.

 $response_body = $response->getBody();

Sonunda, JSON yanıtının kodunu çözebilir ve yükleme süresini yazdırabiliriz.

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

Yani, sonunda, dosya şöyle görünmelidir:

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

Ve aşağıdaki komutu kullanarak betiği çalıştırdığınızda:

 $php with_guzzle.php

Ve yanıtı göreceksiniz:

 Loadtime: 130

Çözüm

Bu yazıda, Geekflare API'sini gerektirecek bir PHP projesi oluştururken kullanmak isteyebileceğiniz farklı istemcileri inceledik.

Bu projedeki komut dosyaları, komut satırını birincil çıktı biçimi olarak kullanırken, gerçek dünya projeleri yanıtı bir web sayfasında sunabilir veya bir dosyaya yazabilir. Bu makaledeki örnek komut dosyaları basitti, ancak Geekflare API'sini kullanmanın temel kavramlarını gösteriyorlar. Farklı API'ler kullanmak için uç noktayı değiştirebilir ve istek gövdesinde farklı seçenekler iletebilirsiniz.

Javascript'te Geekflare DNS Arama API'sının nasıl kullanılacağı da ilginizi çekebilir.