在railscast#350(http://railscasts.com/episodes/350-rest-api-versioning?view=asciicast),它建議創建兩個控制器來處理產品:JSON和HTML每個應用程序都使用API在Rails應用程序中獲得自己的控制器?
controllers/
api/v1/products_controller.rb
products_controller.rb
我想有API版本的靈活性,但這意味着兩個控制器就會有重複的代碼的行爲。
他們更好的方式來做到這一點,不會導致代碼重複?
如果我因爲這個原因使用兩個控制器(一個公共API,而不是應用程序中使用的控制器),我會將每個控制器的功能委派給助手,裝飾器或演示者類/對象(取決於邏輯的複雜程度在控制器中以及內部發生了什麼)。通常,API與提供視圖的控制器的需求不同,因此您可以將該邏輯放在提供視圖的控制器中,但將任何共享邏輯/功能放入其他類中。對不起,我沒有時間發佈代碼示例,所以我只是留下評論。 – creativereason