iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 17
0
自我挑戰組

今晚我想來點 Ruby on Rails 系列 第 17

<Day 17>今晚我想來點 route

  • 分享至 

  • xImage
  •  

route 是什麼

Route 就是整個網站的路徑,在MVC的架構底下 Rails 會依照使用者從瀏覽器傳到伺服器的網址以及一包的參數後透過根據結果,去找到相對應的 Controller 跟 Action。

Rails.application.routes.draw do
  get “/user”, to: “users#index”
end

看到上面設定的路徑 /user Rails 會去找到 UsersController 裡面的 index Action

class UsersController < ApplicationController
  def index
  end
end

找到 Controller 跟 Action 後,Rails 來到了 views 資料夾找相對應的 html 檔案後傳送回去給你的瀏覽器

app > views > users > index.html.erb

<h1>home page</h1>
<p>this is home page</p>

一般最簡單的路徑設定方法就是在直接使用resources 你就會有下圖這些路徑跟發法可以使用,而resource的路徑會跟下圖一樣但是沒有:id

當然也可以一層包一層做出符合你當下需求的路徑,membercollection也是你可以使用的資源,可以寫成下面這個routes,member會有:idcollection沒有

resources :users do
 collection do ( collection 可換成 member )
  get :new
  post :create
 end
end

你也可以使用resources包住resources就會產生下圖這些路徑可以使用,讓你的路徑看起來會有索引的感覺。但是這也是會有缺點,如果某些路徑是你不想給使用者看到的話,使用者會更容易透過直接修改路徑進入到那些你不想給他們看到的網頁(你沒有做好保護的話),例如看到其他使用者的資料。

resources :users do
  resources :posts
end


路徑要也是一種資源,要設計的好也是需要磨練的。

REST

現在許多Web服務或框架都支援REST的架構,REST全名REpresentational State Transfer。REST架構由客戶端/伺服端組成,之間的通訊機制是無狀態的,客戶端對伺服端請求資源,伺服端回應資源,或稱為表現方式。

也就是說,資源在REST中是可定址的(Addressed)概念,是獨一無二的,可能用檔案、文件、格式等型態來表現,代表資源目前或可能的狀態。客戶端獲取的狀態,可能包括下次狀態轉移的連結,因此選擇動詞必須能表現出如何處理請求。

最常使用的動詞 get、post、put、patch 以及 delete

  1. GET 方法請求展示指定資源。使用 GET 的請求只應用於取得資料。
  2. POST 方法用於提交指定資源的實體,通常會改變伺服器的狀態。
  3. PUT 方法會取代指定資源所酬載請求(request payload)的所有表現。
  4. DELETE 方法會刪除指定資源.
  5. PATCH 方法套用指定資源的部份修改。

Rails 裡執行 GET 不會檢查 CSRF token。永遠不要讓 GET 請求可以執行資料庫寫入動作,更多資訊請參考《安全指南》 關於 〈CSRF countermeasures〉 一節。


上一篇
<Day 16>怎麼使用 ruby 的 initialize 方法
下一篇
<Day 18>今晚我想來點 SESSION
系列文
今晚我想來點 Ruby on Rails 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言