2010-11-22 65 views
5

我在過去的2個月裏一直在搞亂軌道,到目前爲止一切進展順利 - 但有一個方面我有點懷疑。Rails:RESTful資源:值得使用還是不靈活/高估?

我一直聽到REST風格的rails資源的樂趣:也就是config/routes中的'resource:foo',以及控制器中的7種寧靜行爲。

除了非常簡單的事情(例如99%通過運行'生成腳手架'完成的東西)之外,我發現嘗試將我的項目功能擠入該方法比僅僅匹配配置/路由中的URL一次方便並根據需要執行每個操作。

但是我一直覺得我錯了,除了最極端的情況之外,RESTful資源是最好的選擇。

所以:

(一)任何人都可以提供對這個評論? (b)對於有經驗的鐵路人員,典型項目中你的路線百分比是:資源和百分比是按行動編碼的? 乾杯...

+0

這是一個主觀的問題,我敢肯定這將引發巨大的爭論:) – rmk 2010-11-22 20:01:03

回答

5

資源很方便,但它們不是「一刀切」的功能。有些東西對7種方法沒有意義。

記住you can

  • 排除特定的方法與:except
  • 僅包含:only的特定方法。
  • 將您自己的方法添加到資源中。

所以他們沒有你想象的那麼呆板。但是,如果考慮到這三點後,資源只是不「感覺正確」,跳過! REST從來不會取代常規路由,它只是試圖抽象出最常見的用例。

如果完全跳過RESTful資源,您將缺少大量免費功能。明智地使用它,你會沒事的。

0

一般來說,我會考慮REST架構開始一個項目。我以這種方式構建了我的基本功能,但隨着項目/網站的進展,我寫了越來越多的視圖,這些視圖不適合RESTful架構。營銷網站和並行功能就是這方面的完美例子。

這裏是關於方法的文章:

http://ablogaboutcode.com/2010/11/22/to-be-or-not-to-be-restful-ruby-on-rails-best-practices/


在開始之前,這裏有您可能要問自己一些問題:

  1. 這是否控制器/主要處理郵件,博客等對象/實體的交易?
  2. 創建,更新,刪除,編輯和新的操作都將在網上提供嗎?

作爲指導,如果您對這兩個問題回答「是」,那麼最好從REST開始,並期望您最終將該體系結構作爲構建塊用於您可能想要執行的其他操作和視圖。否則,選擇一個最能代表該動作將顯示或做什麼的URL(/ archives,/ tour,/ december-offer),並確保使用正確的HTTP協議(GET用於顯示,PUT用於更新,DELETE用於刪除和POST用於創建)。