こんにちは。iQeda [@iQeeeda] です。
「おそらく基本的なこと…」だと想像できるだけに、現場の先輩に聞けないような質問。
「API 開発のデバッグってどうやるの?」を説明します!
※ せっかくなので View ファイルがある場合のデバッグ方法もあらかた説明します。
目次
API はフレームワークで作成することが多いと思うので、
Laravel と CakePHP におけるロギング方法を紹介しています。
ブラウザで値を表示できる場合 (Viewファイルがある)
あらかじめ View ファイルに PHP の値を埋め込んでおいて、
最終的にできる HTML ファイルに値を表示させるデバッグ方法は知っていると思います。
まずはその基本をおさらいしましょう。
echo / print
echo
や print
は値の出力で有名ですが、デバッグで使わなくてもいいです。
後述する var_dump()
や print_r()
の方が便利ですし、
実は「関数じゃない」ので気軽に使おうとすると動作しない状況もあるためです。
$value = '値';
echo $value; // echo($value); も可能
print $value; // print($value); も可能
PHP 公式) PHP: echo – Manual
PHP 公式) PHP: print – Manual
var_dump()
綺麗に値を表示してくれるのが var_dump()
。die()
や exit()
も一緒にすると、以降の処理が走らないので画面が見やすくなります。
$value = '値';
var_dump($value);
die(); // または exit()
PHP 公式) PHP: var_dump – Manual
print_r()
var_dump()
より細かい情報を表示してくれるのが print_r()
です。
$value = '値';
print_r($value);
die(); // または exit()
PHP 公式) PHP: print_r – Manual
dd()
Laravel や CakePHP といったフレームワークを使っている場合、
あらかじめ var_dump()
と die()
を一緒に実行してくれる dd()
が用意されています。
$value = '値';
dd($value);
Laravel 公式) Helpers – Laravel – The PHP Framework For Web Artisans
CakePHP 公式) Function dd | CakePHP 3.4
素の PHP で開発している場合でも dd()
関数を自分で定義しておくと便利ですよ。
API の場合 (Viewファイルがない)
僕が駆け出しエンジニアの頃…恥ずかしい質問だと思いつつ、
「API ってどうデバッグするんですか?」と現場の先輩に聞きました。
あ…なるほどって感じでしたね。
ログを使った API デバッグ方法
そもそも API とは?
API は URL 経由で XML や JSON 形式で値を返すだけの存在なので、
ブラウザに画面表示する用の View ファイルは作成しません。(HTML がない)
つまり API 開発中は View ファイルで dd()
するようなデバッグ方法がとれません。
そこで「ログファイルに値を書き込んで確認」といったことをよくします。
デバッグ中は tail -f [ログファイルのパス]
というコマンドを叩いておきましょう。
ログファイルに書き込みがあったとき、それを自動出力してくれるので便利です。
Laravel で API を作成した場合
Laravel では、以下の関数でデバッグログに書き込むことができます。
ログの設定方法は公式サイトを参照してください。
$value = '値';
Log::debug($value);
プロジェクトファイルの設定によって、以下どちらかになることがあるので注意してください。
Log::debug($value);
\Log::debug($value);
CakePHP で API を作成した場合
CakePHP では、以下の関数でデバッグログに書き込むことができます。
ログの設定方法は公式サイトを参照してください。
$value = '値';
$this->log($value, 'debug');
CakePHP公式) Logging – 3.8 (Using the FileLog Adapter)
Table クラスの場合
CakePHP の Table クラスでログファイル出力されないよ〜って場合、
以下のロギングを試してみてください。
$value = '値';
\Cake\Log\Log::debug($value);
CakePHP公式) Logging – 3.8 (Log API class Cake\Log\Log)
簡単に API のレスポンスを確認する方法
API から返却されるレスポンスの値が正しいか?
単純にそれだけ確認したいだけなら、色々な方法があります。
ブラウザの開発者コンソールの Network タブを見る
ブラウザが GoogleChrome であれば、下記コマンドで開発者コンソールを開くことができます。
Ctrl Shift i
- Windows
⌘ ⌥ i
- Mac
開発者コンソールの Network タブを開いてみてください。
その状態で「画面リロード」するとネットワーク情報が表示されます。
View ファイルが API にリクエストを投げていれば、そのレスポンスを覗くことができます。
API テストツールからレスポンス確認する
手動で API にリクエストを投げて、そのレスポンスを確認する方法もあります。
たとえば curl
コマンドでリクエストを投げるとか…でもコマンドが大変なのでオススメしません。
僕がよく使っている API テストツールを紹介しておきます。
Postman
Postman というサービスを使えば、フォームを使って API にリクエストを投げることができます。
Advanced REST client
こちらは GoogleChrome のプラグインです。同じくフォームから API にリクエストを投げれます。
フレームワークの API テスト画面を使う
フレームワークを使って API 開発をしているのであれば、
その API にリクエストを投げるフォームがある View ファイルを作りましょう。
チームで開発しているなら、これが最もよい方法でしょう。
フレームワークならこういった API テスト画面を用意するのは難しくないはずです。
お仕事ください!
僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。 なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。
カテゴリ「CakePHP」の最新記事
コメント