寝て起きて寝て

プログラミングが出来ない情報系のブログ

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