PHPのHTTPリクエストライブラリ「Requests for PHP」の利用方法
PHPで外部のAPI等にリクエストする際に可能であればfile_get_contentsを、難しい場合はcurlを使っていた。file_get_contentsは分かりやすいがcurlは分かりづらく記述も長くなるので面倒。ライブラリを探したところRequests for PHPが良さそうだったので実装方法をメモ。
目次
やりたいこと
- Requests for PHPのインストール
- 郵便番号データ配信サービスのAPIにリクエスト
Requests for PHP
公式サイト
https://requests.ryanmccue.info/
ドキュメント
https://requests.ryanmccue.info/docs/
インストール
composerを利用する場合
サーバにSSH接続し以下コマンドでインストールする。
composer require rmccue/requests
composerを利用しない場合
以下からzipファイルをダウンロードし、展開した上で適当なディレクトリにアップロードする。
https://github.com/WordPress/Requests/releases
尚、今回はこちらの方法を取った。
実装方法
ソースコード
<?php include('./library/Requests.php'); Requests::register_autoloader(); $url = 'https://zipcloud.ibsnet.co.jp/api/search'; $data = array('zipcode' => '1050003'); $request = Requests::post($url, array(), $data); if( $request != null && $request->status_code == 200 ){ var_dump($request->body); }else{ //エラー時の処理 }
Requests::register_autoloader()
今回はcomposerを使用していないので「Requests::register_autoloader();」で必要ファイルを諸々読み込んでいるが、composerを使用する場合はいつもの「require_once 'vendor/autoload.php';」になると思う。
Requests::post
postの場合は第3引数に送信データ(クエリ)を設定できるがgetだとできない模様。そのためgetを使う場合はurlで直接「?param=1」のように指定する形になる。
エラー対応
Deprecated: The PSR-0 `Requests_...`エラー
「Deprecated: The PSR-0 `Requests_...` class names in the Requests library are deprecated. Switch to the PSR-4 `WpOrg\Requests\...` class names at your earliest convenience. in」というエラーメッセージが表示される場合、「/library/Requests.php」の上の方で以下定数を定義すること。
define('REQUESTS_SILENCE_PSR0_DEPRECATIONS', true);
所感
メリット
- composer無しでもインストール可
- ソースコードを簡潔に書ける
- そこそこ更新が活発(2024/03時点で最終更新が約半年前)
Guzzle
同じようなライブラリでGuzzleというのがあり、こちらの方が有名みたい。こちらもその内試してみたいところ。
関連記事
-
Composer無し&ファイル1枚でPHPのエラーメッセージ画面をリッチにするライブラリ「PHP Error」の利用方法
先日PHPのエラーメッセージを見やすくするwhoopsの利用方法をメモしたが導入 ...
-
PHPで住所や名前のテキストをランダム生成するライブラリFakerPHPの使い方
PHPでランダムなデータを生成したい際に値段や点数等の数値やパスワード等のランダ ...
-
PHPのエラーメッセージ及びvar_dumpを見やすく表示するライブラリ「Tracy」の利用方法
ここのところPHPでの開発時にvar_dumpをツールバー表示する「Kint」及 ...
-
PHPでダミー画像(プレースホルダー画像)を表示する「PHP-Dummy-Image-Generator」の利用方法
先日JavaScriptでダミー画像(プレースホルダー画像)を表示する「Hold ...
-
PHPでデータベースを取り扱いやすくなるORMライブラリ「idiorm」の利用方法
Codeigniterでデータベースを取り扱う際にクエリビルダクラスを用いて可読 ...