#MVCの挙動~RESTアーキテクチャについて(初心者)
##目的
RAILSチュートリアルの勉強をしていてMVCの挙動〜RESTアーキテクチャについてまとめておきたいと思ったから
前提:scaffoldでUsersリソースのコードを生成
- ブラウザから「/users」というURLのリクエストをRailsサーバーに送信する。
- 「/users」リクエストは、Railsのルーティング機構 (ルーター) によってUsersコントローラ内のindexアクションに割り当てられる。
- indexアクションが実行され、そこからUserモデルに、「すべてのユーザーを取り出せ」(User.all)と問い合わせる。
- Userモデルは問い合わせを受け、すべてのユーザーをデータベースから取り出す。
- データベースから取り出したユーザーの一覧をUserモデルからコントローラに返す。
- Usersコントローラは、ユーザーの一覧を@users変数 (@はRubyのインスタンス変数を表す) に保存し、indexビューに渡す。
- indexビューが起動し、ERB (Embedded RuBy: ビューのHTMLに埋め込まれているRubyコード) を実行して HTMLを生成 (レンダリング) する。
- コントローラは、ビューで生成されたHTMLを受け取り、ブラウザに返す
詳細メモ
最初にブラウザからのリクエストを確認。
このリクエストは、アドレスバーにURLを入力したりリンクをクリックした時に発生。
リクエストはRailsルーティングに到達し (②)、ここでURLに基づいて適切なコントローラのアクションに割り当てられる (ディスパッチ)。ユーザーからリクエストされたURLをUsersリソースで使用するコントローラのアクションに割り当てる (マッピングする) コードは、routes.rbに記載。 (マッピングするコードはRailsのルーティング設定ファイル (config/routes.rb) に書く)Railsではconfig/routes.rbで、URLとアクションの組み合わせ を効率よく設定していく。
##RESTアーキテクチャについて
REST : REpresentational State Transfer
Usersリソースが提供するRESTfulなルート
HTTPリクエスト | URL | アクション | 用途 |
---|---|---|---|
GET | /users | index | すべてのユーザーを一覧するページ |
GET | /users/1 | show | id=1のユーザーを表示するページ |
GET | /usersnew | new | 新規ユーザーを作成するページ |
POST | /users | create | ユーザーを作成するアクション |
GET | /users/1/edit | edit | id=1のユーザーを編集するページ |
PATCH | /users/1 | update | id=1のユーザーを更新するアクション |
DELETE | /users/1 | destroy | id=1のユーザーを削除するアクション |
REpresentational State Transferの略。 RESTは、インターネットそのものやWebアプリケーションなどの、分散・ネットワーク化されたシステムやアプリケーションを構築するためのアーキテクチャのスタイルの1つ。
RailsアプリケーションにおけるRESTとは、アプリケーションを構成するコンポーネントを「リソース」としてモデル化することを指す。 これらのリソースは、リレーショナルデータベースの作成/取得/更新/削除 (Create/Read/Update/Delete: CRUD) 操作と、4つの基本的なHTTP requestメソッド (POST/GET/PATCH/DELETE) の両方に対応している。
Rails開発者にとっては、RESTfulなスタイルを採用することで、作成すべきコントローラやアクションの決定が楽になる。
作成(C)・取得(R)・更新(U)・削除(D)を行うリソースだけでアプリケーション全体を構成することも可。