PHPでHTTPリクエストを扱える「Guzzle」ライブラリ
PHP で HTTP リクエストを扱うライブラリとして最近おすすめなのは Guzzle でしょうか。以前 HTTP 関連のライブラリを探していた時に「そういえば AWS SDK for PHP で Guzzle ってのが使われていたな」ということを思い出して使い始めました。
使い方は簡単で、composer を使ってインストールすれば次のように使いはじめることができます。
$client = new GuzzleHttp\Client(); $res = $client->get('http://blog.fkoji.com/'); // ステータスコード取得 $res->getStatusCode(); // レスポンスボディ取得 $res->getBody();
ドキュメントの Quickstart を上から下まで眺めれば、基本的な使い方はおおよそ把握できると思います。
例えば GET リクエストにクエリをつけたい場合は、第2引数の配列のキー「query」に指定します。
$res = $client->get('http://blog.fkoji.com/', [ 'query' => [ 'offset' => 10, 'count' => 20, ], ]);
リクエストヘッダーを追加したい場合は、第2引数の配列のキー「headers」に指定します。
// Authorization: bearer someoauthtoken のヘッダーを追加したい場合 $res = $client->get('http://blog.fkoji.com/', [ 'headers' => [ 'Authorization' => 'bearer someoauthtoken', ], ]);
POST リクエストは以下のように書きます。送信するデータは第2引数の配列のキー「body」に指定。ちなみに body の代わりに「json」を指定して JSON データの送信に対応させることも可能です。
$res = $client->post('http://blog.fkoji.com/', [ 'body' => [ 'mail' => 'example@example.com', 'name' => 'fkoji', ], ]);
なおエラー時に発生する例外がいくつかあって、エラー処理を細かく分けたい場合に有用です。例えば、
- GuzzleHttp\Exception\ClientException … 400系のエラー
- GuzzleHttp\Exception\ServerException … 500系のエラー
これらの例外は両方とも GuzzleHttp\Exception\BadResponseException を継承しているので、まとめて GuzzleHttp\Exception\BadResponseException で受け取ることもできます。概要はドキュメントの Exception の項を参照してください。
Guzzle はバージョンアップが比較的早くて、2014年の1月まではバージョン3系だったのですが、現在の最新バージョンはすでに 5.1.0 となっています。(この記事を読んでいる時点ではさらに進んでるかもしれません。)
バージョン3系とバージョン4以降では Composer におけるパッケージ名が違っていて、バージョン3までは guzzle/guzzle ですが、バージョン4以降では guzzlehttp/guzzle となっていることに注意が必要です。Packagist で検索するとバージョン3系のほうが上位に出るので、うっかり3系をインストールしてしまわないように。書き方もだいぶ違います。
ちなみに AWS SDK for PHP はバージョン3系に依存しているようです。
Guzzle には他にも高度でモダンな機能が用意されているのですが、個人的にまだ全体を把握できていないのでこのあたりの紹介にとどめておきます。
コメントを残す