LaravelでReactをフロントエンドのフレームワークとして採用しているのですが、APIを設計する必要がでてきたのでやってみました。
やること
- ResourceControllerをつくってデータを出力するだけのAPIをつくる
- API公開を見越した認証用ミドルウェアを実装する
やらないこと
- Restの説明
- APIデータの更新や削除
- Ajaxでのデータの取得と出力
環境
- Laravel5.2
Resource Controllerをつくる
職人さんの朝は早い・・・
php artisan make:controller HogeController --resource
職人が仕事するとこんなコントローラーをつくってくれます。
ではAPIを早速つくります。index()のところをいじります。
Responseでjsonをかえすだけです_(:3」∠)_
ルーティング
※Laravel5.3からはrouteがディレクトリになってweb.phpとかapi.phpって感じにファイルが分かれていると思います。api.phpにかくのがベタだと思います。
/apiにアクセスするとjsonレスポンスが出力されていると思います。
APIの認証について
apiを直接たたくようなスケベェな人を避けたい時や、APIを外部に公開したい時は認証を設けましょう。 ここではmiddlewareで認証を行う方法を例にあげたいと思います。
AuthenticateOfApiとかいうAPI利用のためのミドルウェアを作ることにします。
一部Laravelエキスパート養成読本を参考にさせて頂きました。
内部でAPIを利用したい時にAPITokenをヘッダに含めてしまうと認証の意味がなくなってしまいます。(ユーザーにヘッダが丸見えなのでトークンをパクられたら誰でもAPIが利用できてしまいます。)
従って内部でAPIを利用する際はログインと同じ認証方法をとると良いかと思います。
Auth::guard('users')->check()とかでログインチェック!
外部からのAPIの利用については、JavaScriptでヘッダにトークンを入れてPOSTすることで認証させることができます。
※APIの認証については他の記事をご参照ください。
所感
LaravelでAPIをつくる・使うのは簡単ですが、API設計とやらが中々奥深そうです。 自分でつくったAPIを自分で使うというのは結構楽しいのでちょっと頑張ってみます。
参考
- Laravel5.2で認証を用いたAPI作り
- LaravelでRest APIを開発する
- React.jsでLaravelから情報をもらってみよう・・・Laravel+API+React!
- Laravelエキスパート養成読本