勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPのHTTPリクエストライブラリ「Requests for PHP」の利用方法

  PHP

PHPで外部のAPI等にリクエストする際に可能であればfile_get_contentsを、難しい場合はcurlを使っていた。file_get_contentsは分かりやすいがcurlは分かりづらく記述も長くなるので面倒。ライブラリを探したところRequests for PHPが良さそうだったので実装方法をメモ。

 

やりたいこと

 

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というのがあり、こちらの方が有名みたい。こちらもその内試してみたいところ。

 - PHP

  関連記事

PHPでランダムなカラーコードを生成する「RandomColor.php」ライブラリの利用方法

PHPでランダムなカラーコードを生成したい。自作するとなると「0~9」「a~f」 ...

PHPでvar_dumpをツールバー形式で表示するライブラリ「Kint」の使い方

PHPでvar_dumpを見やすくするためにdBugライブラリを利用しているが、 ...

PHPで画像を比較して類似度を算出する「image-comparator」ライブラリの利用方法

PHPで画像の類似度を計測したい。ただ、そのためのロジックが全く分からないためラ ...

PHPで簡単にカレンダーを生成できるライブラリ「PHP Calendar」の利用方法

PHPでカレンダーを描写したいということがたまにある。今までバニラPHPで書いて ...

PHPで配列を確認する際にvar_dumpよりも見やすくなるdBug.phpの利用方法

PHPで配列を確認する際、大抵var_dumpで出力させているがこれが見づらい。 ...