Laravel – REST~リソースベース

概要

RESTはREpresentational State Transferの略。ここでは以下のような感じで理解しておく。

  • リソースを一意に特定できるURL
  • GET、POSTなどのメソッド
  • ステートレスで完結

Laravelでは、リソースベースでルーティングを記述し、リソースコントローラーを生成することで、RESTに沿ったコードが書ける。

以降、Itemというモデルを仮定する。Itemモデルのインスタンスをitem、その集合体をitemsとする。

リソースを一意に特定するURL

サーバーにモデルの集合体が保存されていて、これら全体あるいはその中の特定のデータや、データを表示するビューなどのリソースを指定するURLの書き方。

/items
itemのインスタンスの集合体あるいはこれらを表示するビューなどのリソース。
/items/create
1つのitemを作成するための、入力フォームを含むビューなどのリソース。
/items/{id}
itemsのうちidで特定される1つのitemやこれを表示するビューなどのリソース。POST、PATCH、DELETEといったメソッドによってitemに対する操作を指定する。
/items/{id}/edit
idで特定されるitemの内容を編集するフォームを含むビューなどのリソース。

メソッド

GET
URLで指定したビューのHTMLなどのリソースをサーバーに要求する。
POST
URLで指定したリソースの内容をサーバーに送信する。
PATCH
URLで指定したリソースの内容でサーバー上のリソースの内容を変更するよう要求する。
DELETE
URLで指定したリソースをサーバー上から削除するよう要求する。
PUT
指定した内容でサーバー上のリソースを置き換える。LaravelのRESTfuLの枠組みでは使われない。

RESTfuLなルーティング

メソッドとURLを組み合わせることで、サーバー上のリソースに対する操作が確定する。LaravelでのRESTfuLな操作は以下の7つで、それぞれに応じたコントローラーのアクションにルーティングするのが標準。

リソースベース

リソースベースの考え方

RESTfuLなルーティングと、これに対応したアクションを自動的に生成する方法。

  • リソースルーティングの書き方によって、7つのRESTfuLなルーティングを1行で記述
  • artisanのコントローラー作成コマンドの--resourceオプションで、RESTfuLなルーティングに対応した7つのアクションを持つコントローラーを生成

リソースルーティング・名前付きルート

ルーティング定義に以下の1行を書くだけで、RESTfuLな7つのルーティングを書いたのと同義になる。

routes/web.php

このとき各ルートに名前も付けられる

一覧で確認。

リソースの限定

以下のように書くことで、特定のリソースのみを選んだり除外したりできる。

リソースコントローラー

以下のartisanコマンドで、RESTfuLなルーティングに対応したメソッドを持つコントローラーが生成される。

php artisan make:controller ItemController --resource

生成されるコントローラーのアクションは以下のとおり。

  • index()
  • create()
  • store(Request $request)
  • show($id)
  • edit($id)
  • update(Request $request, $id)
  • destroy($id)

app/Http/Controllers/ItemController

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です