PHP の HTTP Client ライブラリの Guzzle を使う
またまた、更新が遅れてしまいました。決まった感覚で記事あげるってやっぱり大変ですね。
この前会社の新卒から PHP で「 HTTP リクエスト送信するのって file_get_contents
使うしかないですかね〜?」と質問されました。
調べてみたら Guzzle
という便利ライブラリがあったので、どんなもんかなぁと試してみました。
公式ドキュメント
Guzzle, PHP HTTP client — Guzzle Documentation
使い方
Composer でインストール
Composer
でインストールしましょう。
composer require guzzlehttp/guzzle
インストールが終わったら、Composer
が生成した autoload.php
を↓みたいな感じで読み込んでおきましょう。
<?php require __DIR__ . '/../vendor/autoload.php';
リクエストを送信する
ドキュメントを見ると、GET
, POST
, PUT
, DELETE
, PATCH
, HEAD
, OPTIONS
はメソッドが用意されてるっぽい。
正直、使いたい HTTP メソッドは全部揃ってます。
あと、上記に加えて非同期でリクエストを送信する Async
版の各メソッドも用意されてます。(getAsync()
など)大量のリクエストを送信したい場合や、一度の処理に複数の API を叩く必要がある場合は処理速度が上がったりして便利そう。
ちなみに、ライブラリの中身を見ると Async
じゃない同期型のメソッドは request()
が呼び出されていますが、最終的には requestAsync()
を叩いてるっぽいです。非同期にならないように request()
内で制御かけてました。
適当に POST
リクエスト送信します。
<?php $client = new \GuzzleHttp\Client(); $response = $client->request('POST', 'リクエスト先URL', 'オプション');
これだけで HTTP リクエストが送信できて、レスポンスを取得できます。
オプションは公式ドキュメントを確認してください。
Request Options — Guzzle Documentation
フォームの値を送信したい場合なんかは form_params
オプションを使えば良さそうですね。
Request Options form_params — Guzzle Documentation
最後に
大分端折って紹介しましたが、HTTP ステータスを取得できる getStatusCode()
や、レスポンスヘッダーを取得する headers()
メソッドもあるので、 file_get_contents()
を駆使してリクエスト送るより使い勝手が良いですね。
HTTP リクエスト部分を Factory パターンで抽象化して作ってみました。