【PHP】【Gazzle】外部APIにPOSTデータを送信する
※本ページのリンクにはプロモーションが含まれています。
こんにちは、Ryohei(@ityryohei)です!
本記事では、PHP HTTPクライアントのGazzleで外部APOにPOSTデータを送信する方法をご紹介しています。
Gazzleで外部APIにPOSTデータを送信するには、どうすればいいんだろう?
上記の疑問にお答えします。
では、解説していきます。Gazzleをインストールする
ComposerでGazzleパッケージをインストールします。
composer require guzzlehttp/guzzle
2023年7月9日現在のバージョンは下記の通りです。PHPは7.2.5以上が必要になります。
{ "require": { "guzzlehttp/guzzle": "^7.7" } }
Gazzleを読み込む
ComposerでインストールしたGazzleパッケージを読み込みます。Composerでは、autoload.php
とuse
を使って、インストール済みのパッケージを読み込むことができます。
<?php require 'vendor/autoload.php'; use GuzzleHttp\Client;
Gazzleでリクエストを作成する
Gazzleでリクエストを作成します。new
でクラスをインスタンス化する際に作成するリクエストのオプションを指定することができます。ここではbase_uri
オプションで、リクエスト元のベースとなるURLを指定しています。
<?php require 'vendor/autoload.php'; use GuzzleHttp\Client; $client = new Client([ 'base_uri' => 'http://localhost', ]);
その他のオプションについては、下記ドキュメントをご参照ください。
GazzleでPOSTデータを送信する
GazzleでPOSTデータを送信します。オプションのform_params
に配列を指定してデータを送信します。本記事では動作確認に郵便番号検索APIを使用します。
<?php require 'vendor/autoload.php'; use GuzzleHttp\Client; $client = new Client([ 'base_uri' => 'http://localhost', ]); $api_url = 'http://zipcloud.ibsnet.co.jp/api/search'; $res = $client->request('POST', $api_url, [ 'form_params' => [ 'zipcode' => '8120011' ], ]);
Gazzleでレスポンスを確認する
POSTデータを送信後、外部APIからのレスポンスを確認します。レスポンスには多くの情報が含まれていますが、ここではHTTPレスポンスボディからコンテンツを取り出してみます。
<?php require 'vendor/autoload.php'; use GuzzleHttp\Client; $client = new Client([ 'base_uri' => 'http://localhost', ]); $api_url = 'http://zipcloud.ibsnet.co.jp/api/search'; $res = $client->request('POST', $api_url, [ 'form_params' => [ 'zipcode' => '8120011' ], ]); $body = $res->getBody(); $result = $body->getContents(); json_decode($result, true);
$result
の中身は下記となります。
array(3) { ["message"]=> NULL ["results"]=> array(1) { [0]=> array(8) { ["address1"]=> string(9) "福岡県" ["address2"]=> string(18) "福岡市博多区" ["address3"]=> string(12) "博多駅前" ["kana1"]=> string(18) "フクオカケン" ["kana2"]=> string(27) "フクオカシハカタク" ["kana3"]=> string(21) "ハカタエキマエ" ["prefcode"]=> string(2) "40" ["zipcode"]=> string(7) "8120011" } } ["status"]=> int(200) }
無事POSTデータを送信してレスポンスを受け取ることができました。
$result
には、取り出したいコンテンツの他、ステータスやメッセージも格納されています。本記事では省略していますが、続く処理となる条件分岐等も簡単に実装できそうですね。
最後に
本記事の執筆にあたって、PHPのHTTPクライアントとして人気のあるGazzleを初めて利用しました。他のパッケージを使用したことがある方であればスムーズに導入できる内容になっていると思います。使いやすいHTTPクライアントをお探しの方、ぜひGazzleを試してみてくださいね。
以上、PHPのGazzleで外部APIにPOSTデータを送信する方法のご紹介でした!