所以,我正在學習Ruby on Rails。我獲得了應用程序體系結構的RESTful方法的基礎知識,但我還沒有完全構建一個RESTful應用程序。Rails的REST實現如何被認爲是REST?
在傳統的Web應用程序中,冪等請求(不會改變任何狀態)通過HTTP的GET
方法進行,所有非冪等請求通常通過POST
方法進行。爲了區分不同的動作,可能會觸發一個POST
請求,通常在POST
請求中包含表單中的隱藏字段,例如action=delete
或action=add_to_foo_file
。這是一個相當簡單的架構,今天很常見,但REST方法讓我們遠離這一點,並建議這個「讓我們發佈一切!」設計被認爲是有害的。
相反,RESTful架構具有我們通過其唯一地識別它們(名詞)和HTTP請求方法(動詞)中的URI操縱資源,而不是確定什麼動作基於在所述請求中的獨立字段採取:
GET => show the resource
PUT => update the resource
POST => create a new resource
DELETE => destroy the resource
所以現在我們來到Ruby on Rails。在Rails中,PUT
和DELETE
由JavaScript實現,它將鏈接更改爲帶有隱藏字段_method
的表單。通過POST
從瀏覽器接收表單,然後Rails查找該字段並決定是否將請求路由到控制器的PUT
或DELETE
方法。
等等,什麼?這聽起來很像 - 甚至完全一樣 - 傳統Web應用程序的行爲,該應用程序通過POST
接收所有狀態更改請求,並檢查特定字段以決定是銷燬還是修改記錄。
那麼,怎樣才能Rails的做法可以說是REST風格在所有,因爲引擎蓋下,它僅僅是一個重新實施其REST具體試圖從移開‘我們的崗位一切’的做法呢?
此外,不會阻止我的Rails應用程序對於在瀏覽器中關閉了JS的人士降級嗎?
+1,優秀的答案。 – 2012-07-27 20:25:34