Laravel5.2でRESTfulなAPIを作ってみる

REST
LaravelでRESTfulなAPIを作成してみます。DBを使ってみるにしても、まずはルーティングからなので。

RESTfulって何?

まずはそこですよね。もう知ってるって人はここは読み飛ばしてください。大したこと書いていないので。詳しいことは参考サイト様で勉強していただきたいのですが…ザックリと私が認識している限りですと。。HTTPメソッドをHTTPプロトコルの定義通りに使っておけばRESTfulなんだと思っています!w
例えばユーザー情報を取得・操作する場合、下記のように用途によって明確にHTTPメソッドを使い分けます。

GET   /user ユーザー情報取得
POST /user ユーザー情報登録

GETとPOSTは馴染みがあると思いますが、その他にもPUTとDELETEがあります。

PUT       /user ユーザー情報更新
DELETE /user ユーザー情報削除

他にもあるのですが、この4つが使い分けられればまぁいいかな、と思っています。
ステートレスだとかは…参考サイト様に詳細が書かれていますw
また、実際にどのようなAPIが使われているのか、Twitter REST APIsを見てみるとなんとなく掴めてくると思います。

[参考サイト]
IBM developerWorks
https://www.ibm.com/developerworks/jp/webservices/library/ws-restful/
Twitter REST APIs
https://dev.twitter.com/rest/public

LaravelでRESTfulなルーティングとコントローラを設定

restful-resource-controllers
サイトに書かれていた通り、artisanでコントローラを作成します。簡単に作成できますが、普通にPHPファイルを作っても大丈夫です。

成功したっぽいので、Controllersディレクトリを見てみると…
C:\project\test\app\Http\Controllers\ArticleController.php
おおー、できました!
コントローラはできたので、次はroutes.phpにルーティングを追記します。

2行目だけでも大丈夫なのですが、今回APIということでURLを必ずapi~としたいのでRoute::groupでグルーピングしています。
これによって /api/article というURLが使えるようになりましたヾ(=^▽^=)ノ

PHPStormを使ってRESTfull確認!

さて、使えるようになりましたヾ(=^▽^=)ノって言われても実際正しくルーティングできているのか確認しないと分からないですよね。一番簡単なGETであれば、普通にブラウザとかで確認できますが、それ以外は…?
ツールは色々あるのですが、せっかく導入したPHPStromを使って確認したいと思います。

各Functionに確認用のロジックを追記

GET、POST、PUT、DELETEの確認をしたいので、こんな感じにしてみました。パラメータを受け取るところは、受け取ったことも確認したいので出力するようにします。

PHPStormのRESTテストツールを使用

ソースの準備はできたので、あとは動かすだけです!メニューのToolsにありますので、ぽちっとな。

Tools > TEST RESTfull Web Searvice

すると、「REST Client」という小窓がPHPStormの画面下部に出てきます。見れば、なんとなく使い方が分かると思います。「HTTP method:」というところのコンボボックス!ここでGETやPOSTが選択できますね!そういうことです!
methodを選択して「Host/port:」、「Path:」に自分の環境の情報を入れて、左にある緑色の三角をクリックすると実行されます。「index」とResponseが返ってきましたので、GETは大成功です!
phpstorm_REST_GET次はPOSTを試してみましょう。今度はパラメータの確認もしたいので、パラメータを設定してから実行します。POST methodにして「Request」タブを選択します。「Request Parameters」という欄にある緑色のプラス(+)をクリックするとパラメータを追加できます。パラメータ名とその値を入れてみます。

phpstorm_REST_POST_1このように、プラスやマイナスをポチポチすることでパラメータを増減させることができます。

phpstorm_REST_POST_2実行してみると、出力するようしていたURLだけが返りましたね。リクエストパラメータは $request という変数にきちんと格納されて渡っていることが分かりました。こちらもバッチリです!

さて、UPDATEは飛ばしてwDELETEを試してみます。こちらはPUTの時とは異なりURLの中にパラメータを入れます。

phpstorm_REST_DELETEPathに「sato」と入れて「/api/article/sato」となり、きちんと「sato」が渡っていますね。こちらも成功!satoが削除されてしまう

PUTに関してはPOSTとDELETEでやったことの合わせ技なので、ここまでやったら迷うことはないかと思います。その他のメソッドに関しても、同じような感じで使うことができます。簡単ですね!

今回はPHPStormのツールを使ってみましたが、Chromeでも簡単にテストすることができます。Chromeウェブストアで「REST」とか入れれば色々出てきますので試してみてください。私はAdvanced REST clientというのを使っていました。使い方は大体同じです^^
もし数人で開発するようであれば、Swaggerとか入れてみてもいいですね。そのうちSwaggerについても導入や使い方書くかもしれません。

さてさて、次こそDBバリバリ使ってAPI作っていきますよ~!

スポンサーリンク
レクタングル(大)
レクタングル(大)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする