2021年8月19日 現場Rails Chapterr6 (routes.rbについて)
RESTfulとは
RESTの原則 ①統一インターフェース :あらかじめ定義・共有された方法(WebであればHTTP)で情報がやりとりされる ②アドレス可能性 :すべての情報が一意なURLの構造で示される ③接続姓 :やりとりされる情報にはリンクを含めることができる ④ステートレス性 :やりとりは1回ごとに完結し、前のやりとりの結果に影響を受けない
RESTful - 1.HTTPリクエストはそのリクエストで必要な情報をすべて持ち、前のリクエストからの状態が保持されている必要がない(ステートレス) - 2.個々の情報(リソース)への「操作」の表現がHTTPメソッドとして統一される - 3.個々の情報(リソース)がそれぞれ一意なURIで表されている - 4.ある情報(リソース)から別の情報を参照したいときは、リンクを利用する
RDBとは
Relational Database(リレーショナルデータベース)とは、データを複数の表として管理し、表と表の関係を定義することで、複雑なデータの関連性を扱えるようにしたデータベース管理方式。
URLヘルパーメソッド
photos_pathは/photosを返します new_photo_pathは/photos/newを返します edit_photo_path(:id)は/photos/:id/editを返します (edit_photo_path(10)であれば/photos/10/editが返されます) photo_path(:id)は/photos/:idを返します。 (photo_path(10)であれば/photos/10が返されます) これらのpathヘルパーには、それぞれに対応するurlヘルパー (photos_urlなど) があります。urlヘルパーは、pathの前に現在のホスト名、ポート番号、パスのプレフィックスが追加されている点が異なります。
_path
・相対パス
=相対パスは今いる位置を起点にして、場所を指定する。
・redirect_to以外で使用する。
・link_toでよく使用されるイメージ
_url
・絶対パス
=絶対パスは今いる位置に関係なく場所を指定する。
・redirect_toの時にセットで使用する。(HTTPの仕様上、リダイレクトのときに完全なURLが求められるので)
putとpatchの違い
Putメソッドは更新というよりは置換 Patchメソッドは既存のリソースを更新・変更・修正
patchは、データがすでに存在しているものに対して更新をかける処理です。
putはデータが存在しているかどうかわからないときに使用します。データが存在しているときは更新をし、データが存在しない場合は新規作成を行うという処理です。
リソースとは?
URLが表す情報の一単位のこと。
resoucesでルートを定義
resourcesメソッドを用いてルーティングを作成すると、WebアプリケーションのCRUD機能を実装するために必要なルーティングを全て作成することができます。
resourcesメソッド
とは、railsで定義されている**7つのアクション
のルーティングを自動で作成する**メソッド。
#ルーティングを記述するroutes.rb内でresoucesを使ってルートを定義 Rails.application.routes.draw do resources :コントローラー名 end #コントローラーに7つのアクションルーティングを設定する
resoucesで、複数のコントローラーのルーティングを一行で定義する
Rails.application.routes.draw do resources :コントローラー名, :コントローラー名 end # (例)usersコントローラーとhogesコントローラーの7つのアクションのルーティングが作られる resources :users, :hoges
onlyとexceptオプション
特定のアクションのルートだけを作成するオプション。
#tweetsコントローラーにindexアクションとshowアクションのルートだけを指定 Rails.application.routes.draw do resources :tweets, only: [:index, :snow] end
railsのroutes.rbのmemberとcollectionの違いは?
memberとcollectionの違いは?
routingにid
が付くか付かないかの違い。
member
=URLに:idが含まれる ex) /tasks/:id ⇒taskの特定のidのページ、特定の投稿に対して、ブックマークするときなどに使う。
collection
=URLに:idが含まれない ex)/tasks/
・memberは特定のデータにアクションを利用する
・collectionは全体のデータにアクションを利用する
ex)サーフボードのコレクション,メンバーはある集団の一員。
resourcesメソッドを使ってルーティングを定義しよう!
routes.rbの構造化
scope・namespaceの違い Railsのroutingにおけるscope / namespace / module の違い キー:URLの変更・ファイル構成
現場Railsでは、contollerでまとめる方式も紹介されている。
Rails.application.routes.draw do controller :products do resources :products, only: [:index] end controller :photos do resources :photos, onky: [:index] end end
scope / namespace / module
scope URLに意味を持たせるために使う。URLの構成を自分で変えることができる。ディレクトリ構成は変わらない。
namespace URLとディレクトリ構成を自分で変えることができる。
scope module URLは変わらない。ファイル構成だけを変える。
namespace使用例:admin権限のコントローラー・ビューを分けたいetc (URL・ファイル構成を変えられる。) - app/controller/admin/users_controller.rb:管理 - app/controller/users_controller.rb:一般ユーザー
postのコアイメージ
postのコアイメージは「立てる」。何もない更地に新しく物を立てるって意味で使う。
ex) 新しいポストに着くとかでもポストを使う。
URIとURL
URL(Uniform Resource Locator)
Web上にある、あらゆるファイルがWeb上のどの位置にあるのかを表したもの。特定のWEBページのWEB上の住所。
URI(Uniform Resource Identifier)
Web上にある、あらゆるファイルを認識するための識別子の総称。
URLはWEBにあるサイトとかホームページとかの住所みたいなもの。 URI:ID(広義ではURLを含む、JSONを返したり、webページの住所に留まらない) https://kenkotest.herokuapp.com/users
URL:住所(Webページの住所) https://www.google.com/
rails/info/routes
以下のコマンドをURLに書くと、ブラウザ画面上でルーティングを確認できる。
rails/info/routes
今日やったことのまとめ
- Railsと周辺理解
- HTTPメソッドとURLパターン
- URLヘルパーメソッド
- routes.rbの書き方
- RESTful設計(resourcesなど)
- URL設計の考えかた(scope,namespace,module)