【PHP】Guzzleを利用し外部データを取得する例|APIを利用する場合など
PHPではAPIを利用する場合など、外部データを取得する際にfile_get_contents関数やcURL(カール)が利用できますが、今回は、 HTTPクライアントライブラリのGuzzleを使い外部データを取得する例となります。
【PHP】Guzzleを利用し外部データを取得する例
GuzzleをComposerでインストール
まずは、PHPライブラリの依存関係を管理するComposerでGuzzleをインストールするため、プロジェクト内のComposerを配置するディレクトリにcdコマンドで移動し、以下のコマンドを実行します。
composer require guzzlehttp/guzzle
また、ComposerをMacで利用する方法については、以下のリンク先を参考にしてみてください。
Guzzleの利用例
以下、Guzzleを利用して外部データを取得する例となります。
// Guzzleを利用するためComposerのautoload.phpを読み込み
require __DIR__ . '/vendor/autoload.php';
// Clientクラスをインポート
use GuzzleHttp\Client;
// Clientクラスのインスタンスを作成
$client = new Client();
// リクエストURLを指定
$response = $client->request('GET', 'https://example.com');
// レスポンスデータを取得
$response->getBody();
リクエスト送信を設定するrequestメソッドでは、第1引数にHTTPメソッドを指定し、第2引数にリクエストURLを指定します。また、第3引数には連想配列でリクエストオプションを指定できます。
URLパラメータ(クエリ文字列)を指定する場合
リクエストURLにクエリ文字列を追加する場合、次のようにrequestメソッドの第2引数に、クエリ文字列を含むリクエストURLを指定できます。
$client->request('GET', 'https://example.com?foo=bar');
その他、次のようにrequestメソッドの第3引数の連想配列にキー'query'を追加し、その値に連想配列でパラメータ名と値を指定することでも、リクエストURLにクエリ文字列を追加できます。
$client->request('GET', 'https://example.com', [
'query' => [
'foo' => 'bar',
]
]);
SSL証明書の検証によりリクエストがエラーとなる場合
ローカルのテスト環境でGuzzleを利用してリクエストを送信する際に、SSL証明書の検証を求められて、エラーとなる場合があるかもしれません。
その場合は、リクエスト送信の設定に次のオプションを指定することで、SSL証明書の検証を無効にできます。
$client->request('GET', 'http://example.com', ['verify' => false]);
また、リクエストオプションはインスタンス作成時に次のように指定することもできます。
new Client(['verify' => false]);
その他の利用例やリクエストオプションについて
以上がGuzzleを利用して外部データを取得する例となります。
また、Guzzleでは非同期通信や例外処理の実装なども行えます。Guzzleの利用方法の詳細や、その他のリクエストオプションなどについては、文末の参考サイト内を確認してみてください。