【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の利用方法の詳細や、その他のリクエストオプションなどについては、文末の参考サイト内を確認してみてください。

参考サイトなど

コメント投稿コメント投稿欄を開く

コメントは項目欄(*は必須項目)を入力し、「コメントを送信」ボタンをクリックしてください。 (メールアドレスは公開されることはありません。コメントの公開は承認制となります。)

また、多忙によりコメントには返信できない場合があります。

Twitterで返信する場合はこちらから。