PHP クライアントで Geekflare API を使用する方法

公開: 2022-10-25

このガイドでは、Geekflare API への接続に使用できるさまざまな PHP クライアントについて説明します。

具体的には、Geekflare API とfile_get_contents関数、Guzzle、HTTPful、および Symfony の HTTPS クライアントの使用について説明します。

Geekflare API とは何ですか?

Geekflare は、Web サイトのパフォーマンスを監視するために使用できる一連の無料ツールを提供します。 これらのツールには、壊れたリンク アナライザー、読み込み時間、および DNS チェッカーが含まれます。 これらのツールには、Web インターフェイスまたは API を介してオンラインでアクセスできます。

API は HTTP に基づいており、HTTP クライアント ライブラリを使用して任意のプログラミング言語からアクセスできます。 API には、支払い情報を提供する必要なく使用を開始できる寛大な無料利用枠があります。

これから構築するもの

コマンド ラインから実行可能なスクリプトを作成します。このスクリプトは、Google の Web サイトを読み込んで端末に出力するのにかかる時間を計算します。 API の使用がどのように見えるかを示すために、さまざまな PHP HTTP クライアントを使用してこの単純なプログラムを実装します。

具体的には、組み込み関数の file_get_contents file_get_contents()php_curl 、および拡張 Guzzle PHP を使用します。 これらの例は単純に見えるかもしれませんが、Geekflare API を使用する際の核となる概念を示しています。

前提条件

先に進むには、事前に PHP を理解し、コンピューターにインストールしておく必要があります。 さらに、拡張機能を管理するには Composer が必要です。

最後に、コードを書き込むためのテキスト エディターも必要です。私の場合は、Microsoft の人気のあるオープン ソース テキスト エディターである Visual Studio Code を使用します。 Visual Studio Code の Web サイトからダウンロードできます。

Geekflare API の概要

Geekflare API には、目的に応じてさまざまなエンドポイントがあります。 エンドポイントと関連ドキュメントの完全なリストは、ドキュメント ページにあります。

Geekflare アカウントの作成

API の使用を開始するには、API のランディング ページに移動し、サインアップ ボタンをクリックしてアカウントを作成する必要があります。 サインアップが完了すると、ダッシュボードが表示され、API キーが表示されます。 ダッシュボードは下の図のようになります。 セキュリティ上の理由から、API キーを塗りつぶしました。

Geekflare-ダッシュボード-1

作成するすべての API リクエストで、このキーをリクエスト ヘッダーとして提供する必要があります。 すぐに、これがどのように行われるかがわかります。

Geekflare アカウントを作成し、PHP をインストールしたら、プロジェクトの作成を開始できます。

プロジェクトフォルダーの作成

まず、プロジェクト ファイルを保存するフォルダーを作成します。 その後、次のファイルを作成します

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

その後、次のコマンドを実行してvlucas/phpdotenvおよびguzzlehttp/guzzle guzzle 拡張機能をインストールします。

 composer require vlucas/phpdotenv guzzlehttp/guzzle

この時点で、プロジェクト フォルダーは次のようになります。

スクリーンショット-2022-10-17-10-55-35 から

.envファイルを開き、次のコード行を追加して<your-api-key>を Geekflare ダッシュボードの実際の API キーに置き換えます。

 API_KEY=<your-api-key>

file_get_contents() の使用

HTTP リクエストを作成するために使用できる最初の方法は、PHP に組み込まれているfile_get_contents()関数を呼び出すことです。 file_get_contents()関数の関数シグネチャは次のとおりです。

 file_get_contents(path, include_path, context)

このメソッドは、ローカル ストレージ内のファイルの内容を読み取るためによく使用されますが、API エンドポイントによって返されるデータなどの Web リソースを読み取るためにも使用できます。

開始するには、 with_file_get_contents.phpを開き、ボイラープレート PHP コードを追加します。

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

次に、拡張機能のロードを開始できます。 次のコード行をファイルに追加します

require_once('vendor/autoload.php');

次に、API キーを含む環境変数をロードできます。

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

次に、ペイロードを定義できます。 これは、リクエスト本文の一部として送信されるデータになります

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

ペイロード変数を作成し、プロパティとしてurlproxyCountry 、およびfollowRedirectを含む JSON 文字列に割り当てました。

urlプロパティは、読み込み時間を確認する Web ページを指定します。

proxyCountryは、リクエストを行うために使用するサーバーの場所です。 この場合、米国のサーバーを使用していますが、インド、中国、英国、フランスから選択できます。 詳細については、ドキュメントを参照してください。

次に、 followRedirectは、プロキシ サーバーが任意のリダイレクトに従い、最終応答または最初のリダイレクトの応答時間を測定する必要があるかどうかを指定します。

その後、次のコードを追加して、リクエストを構成するオプションを作成できます。

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

これにより、HTTP メソッドが POST であることを指定するオプション オブジェクトが作成され、 x-api-keyとしてのコンテンツ タイプと、 .envファイルであり、環境変数としてロードされています。

次に、オプションが書き込まれるストリームを作成して、リクエストを行うことができます。

 $context = stream_context_create($options);

次に、 file_get_contents()メソッドを呼び出してリクエストを作成し、レスポンスを変数として保存します。

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

https://api.geekflare.com/loadtimeにリクエストを送信しました。 false は、パスを使用しないように PHP に指示します。 そして、作成したコンテキストをメソッドに渡します。

応答を表示するには、次のように出力を使用します。

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

これが完了すると、ファイルは次のようになります。

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

次のコマンドを使用してファイルを実行すると、次のようになります。

 php with_file_get_contents.php

次の出力が得られます

Loadtime: 81

cURL の使用

cURL は、クライアント側の URL 要求を作成するために使用されるコマンド ライン ユーティリティです。 PHP では、php-curl ユーティリティを使用して使用できます。 使用を開始するには、 with_curl.phpファイルを開き、ボイラープレート PHP を記述します。

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

次に、拡張機能をインポートして、 .envファイルで定義された API_KEY 環境変数をロードします。

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

次に、オブジェクトのヘッダーを配列として格納する変数を作成します。配列内の個々の要素は特定のヘッダーです。

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

コンテンツ タイプ用と API キー用の 2 つのヘッダーを定義しました。

次に、リクエストの本文を定義できます。

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

この後、 curl_init()関数を使用して curl セッションを作成できます。 関数呼び出しの引数として、リクエストを送信したい URL を渡すことができます。

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

これで、ヘッダーとボディをセッションのオプションとして定義することで、すべてをまとめることができます。 このために、 curl_setopt_array()関数を使用します。

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

リクエストを行うには、 curl_exec()関数を呼び出します。

 $response = curl_exec($ch);

応答を$response変数に保存したので、セッションを閉じて、セッションで使用されているシステム リソースを解放できます。

 curl_close($ch);

最後に、 var_dumpを使用して応答を画面に出力できます。

 var_dump($response);

最終的に、スクリプト ファイルは次のようになります。

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

php with_curl.phpを使用してスクリプトを実行すると、次の出力が得られるはずです。

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

リクエストは正常に完了し、API は JSON0 データで応答しました。 このデータは自由に使用できます。

ガズル付き

このチュートリアルの最後の部分では、Guzzle を使用してスクリプトを作成します。 いつものように、PHP ボイラープレートをwith_guzzle.phpの中に挿入することから始めます。

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

次に、拡張機能と Guzzle クライアントとリクエスト オブジェクトをインポートし、環境変数をロードします。

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

次に、環境変数をロードできます。

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

その後、Guzzle HTTP クライアントをインスタンス化できます。

 $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 クラスをインスタンス化し、API エンドポイント URL、ヘッダー、および本文を渡すことで、要求を作成できます。

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

次に、次のコード行を追加してリクエストを送信できます。

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

リクエストが送信されると、次のようにリクエストの本文を受け取ることができます

$response_body = $response->getBody();

最後に、JSON 応答をデコードして読み込み時間を出力できます。

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

したがって、最終的に、ファイルは次のようになります。

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

そして、次のコマンドを使用してスクリプトを実行すると:

 $php with_guzzle.php

そして、あなたは応答を見るでしょう:

 Loadtime: 130

結論

この記事では、Geekflare API を必要とする PHP プロジェクトを作成するときに使用できるさまざまなクライアントについて説明しました。

このプロジェクトのスクリプトは出力の主要な形式としてコマンド ラインを使用しますが、実際のプロジェクトでは応答を Web ページに表示したり、ファイルに書き込んだりできます。 この記事のサンプル スクリプトは単純なものでしたが、Geekflare API を使用する際の核となる概念を示しています。 別の API を使用するには、エンドポイントを変更し、要求本文で別のオプションを渡すことができます。

Javascript で Geekflare DNS Lookup API を使用する方法にも興味があるかもしれません。