素で書こうとするとそこそこ苦労する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 日本語ドキュメント