LaravelのREST APIの話

素で書こうとするとそこそこ苦労するREST API周りの実装ですが、Laravelにはこのあたりに必要な機能が始めから入っているためかなり楽に作りこむことができます。

Laravelのコントローラーで文字列、もしくは配列をreturnするとjson_encode()しなくても勝手にjsonに変換してくれたり、ステータスコードを付加するのがかなり簡単だったりとほぼそのまま使える状態になっています。

また、URLとコントローラーのメソッドを対応させるルーティングについても、デフォルトでAPI用のルーティングファイル(routes/api.php)が別で用意されており、APIのルーティングだけ、Web部分のルーティングと分離して書くことができます。

api.phpに書かれたルートにアクセスするには

example.com/api/...

のように、urlにapiというディレクトリ名を挟むだけです。

ここまでは非常によくできていて、APIを作る開発者にとっては非常にありがたいのですが、個人的に難点を感じたのがREST API使用時の認証の部分。

簡易的な認証であれば、DBのユーザー情報テーブルに”api_token”というカラムを追加して、このカラムに対してユーザー登録時にapiトークンを自動生成するようにしておけばLaravelのデフォルトのメソッドを使用してapiトークンによる認証を行わせることができるようになっているのですが、このapi_tokenにあたるカラム名をカスタマイズしたりだとか、Twitterのように、トークン+セキュリティトークンの2つで認証させるようにカスタマイズしたい場合などにカスタマイズが簡単にできない点があり、独自に実装してしまった方が早い…という側面があります。

このあたりがもっと改良されてこればより実用的になると思うのですが…

かゆいところに手が届かない感があってつらいところです。

[Laravel]レスポンスをJSON形式で返す方法2つ – Qiita

基本的なルーティング – Laravel 日本語ドキュメント

API認証 – Laravel 日本語ドキュメント

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG