Railsのルーティング(1)~RESTfulとは~
今回はRESTfulインターフェイスの説明と定義まで。RESTfulインターフェイスのカスタマイズ
ルーティングとは
RailsでいうルーティングとはリクエストURLに応じて処理の受け渡し先を決定すること、 またはその仕組みのことを言う
要はRailsのアクションを決定している。これができるようになると楽に開発が進む(よね・・・)
RESTfulインターフェイス
RESTfulなインターフェイスとはRESTの特徴を備えたルートのことを言う。 RESTとはWebに運用したソフトウェア設計様式のこと。 これはURLで表現することができる。つまりURLに対してHTTPのメソッドである
・GET(取得) ・POST(作成) ・PATCH(PUT)(更新) ・DELETE(削除)
これを利用することで統一感のある、意味がつかみやすいURLを設計することができる。
要は http://localhost:3000/test というURLがあったとする これにRESTを適用すると1つのURLに対してHTTPメソッドのGETでアクセスすればデータを取得。POSTでアクセスすればでデータの作成を行えるということ。(indexとかnewとか)
Railsでは、原則としてRESTfulなインターフェイスに沿ってルート設計するのが基本。 form_for,url_for,link_toなどのビューヘルパーなどもRESTfulを前提として設計されている為、 RESTfulインターフェイスのほうがより自然に表現することが多い
一応利用しないで実装することは可能だがあまり推奨されない
RESTfulインターフェイスを定義するには「routes.rb」でresourcesメソッド
を呼び出す
構文は以下の通り
resource :name
nameはリソース名 リソースとはCRUDの対象となる情報(コンテンツ)って考えて大丈夫
ようはscaffoldで生成した場合はその名前
記述する場合の例は以下のとおり
Railbook::Application.routes.draw do resources :users ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ end
この1文を付け足すことによりURLとアクションがマッピングされる 1文で定義されたルートは以下のとおり
URL | アクション | HTTPメソッド | 役割 |
---|---|---|---|
/users(.:format) | index | GET | ユーザ一覧画面を生成 |
/users/:id(.:format) | show | GET | 個別ユーザ詳細画面を生成 |
/users/new(.:format) | new | GET | 新規ユーザ登録画面を生成 |
/users(.:format) | create | POST | 新規ユーザ登録画面からの入力を受けて登録処理 |
/users/:id/edit(.:format) | edit | GET | 既存ユーザ編集画面を生成 |
/users/:id(.:format) | update | PATCH/PUT | 編集画面からの入力を受けて更新処理 |
/users/:id(.:format) | destory | DELETE | 一覧で選択されたデータを削除処理 |
アクションは全てリソース名に対するControllerに属する また、resourcesメソッドはビューヘルパーlink_toなどで利用できるurlヘルパーも自動生成できる
このヘルパーを使うことでルート定義に左右されることなく表現することができる。
利用できるヘルパーは以下のとおり
ヘルパー名(_path) | ヘルパー名(_url) | 戻り値(パス) |
---|---|---|
users_path | users_url | /users |
user_path(id) | user_url(id) | /users/:id |
new_user_path | new_user_url | /users/new |
edit_user_path(id) | edit_user_url(id) | /users/:id/edit |
これが自動で使えるようになる
また単一のリソースを定義する
resource :name
単数形なのでsが消えてる
resourceメソッドを利用することで単一のリソースも定義できる。
単一のリソースとはアプリケーションの設定情報など。
アプリケーションの設定情報はそのアプリケーションで唯一なのでresources
のように
id情報が必要なくなる(「/config/15」ではなく「/config」にしたい)
これを定義すると以下のメソッドが自動生成される(今回はconfigをresourceしたものとする)
URL | アクション | HTTPメソッド | 役割 |
---|---|---|---|
/config(.:format) | show | GET | 詳細画面を生成 |
/config/new(.:format) | new | GET | 登録画面を生成 |
/config(.:format) | create | POST | 登録情報の入力を受けてから登録処理 |
/config/edit(.:format) | edit | GET | 既存設定の編集画面を表示 |
/config(.:format) | update | PATCH/PUT | 更新処理 |
/config(.:format) | destroy | DELETE | 削除処理 |
自動生成されるパス
ヘルパー名(_path) | ヘルパー名(_url) | 戻り値(パス) |
---|---|---|
config_path | config_url | /config |
new_confgi_path | new_config_url | /config/new |
edit_confgi_path | edit_confgi_url | /config/edit |
ルート定義の確認
・ブラウザから確認 アドレスバーに以下のアドレスと入力 「http://localhost:3000/rails/info/routes」 にアクセスするとルートの定義を確認することができる
・コマンドプロンプトから確認
bundle exec rake routes