LaravelでRestAPIをつくる

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を自分で使うというのは結構楽しいのでちょっと頑張ってみます。

参考