隨着Ruby on Rails的,REST是簡化事情的開發商和製造資源,易於機器准入方面有很大的概念,但它也產生驚人醜陋的網址爲人類。如何使Ruby on Rails REST風格的路線非常友好和人性化?
例如,使用流行的RESTful Authentication插件來處理用戶登錄和認證時,它創建兩個控制器用於認證和授權,用戶和會話。這是因爲用戶表示與用戶關聯的長期資源,例如登錄名和密碼,而會話表示與登錄會話相關的登錄信息,例如cookie資源。因此,網站的登錄網址將爲site.com/sessions/new。
默認情況下,它還會創建一個路由,以幫助這個: map.login '/登錄',:控制器=> '會議',:動作=> '新'
然而,這真的只是因爲在提交路徑才能正常工作時,它創建的表單使用<%form_tag session_path do - %>。這會導致表單的帖子進入SessionsController#create,但是如果表單提交失敗(例如由於憑據錯誤),用戶的瀏覽器將留在site.com/session,這看起來很尷尬。更糟糕的是,如果用戶手動輸入該網址,它將不可用,除非我定義了一個索引方法。如果我改變的form_tag閱讀<%的form_tag login_path做 - %>則會導致職位,以SessionsController#新的,這完全打亂了休息。
我怎麼能與其他公司基本一致,合理的期待網址嗎?總的來說,我真的被使用REST的便利所吸引,但這似乎是錯誤的,因爲這會產生對用戶可見的(負面)變化。
您遇到的衝突是由於這樣的事實:** **純粹的REST是一種無狀態架構(見http://en.wikipedia.org/wiki/Representational_State_Transfer#Constraints)。因此,在純粹的方法中,會話甚至不應該成爲REST實現的一部分。 – 2010-01-24 00:56:00