2009-06-29 19 views
3

我有動作控制器:如何基於REST-IZE一個複雜的控制器

class GameController < ApplicationController 
before_filter :set_titles 

def prestart 
end 

def wait 
end 

def play (game) 
end 


def button 
end 

def finish 
end 


def set_titles 
end 

set_titles將獲得(適用於所有操作和其他一般屬性)頁面標題 所有其他行動檢查的東西,呈現視圖。

如何基於REST-IZE這一點。 我只能想到創建一個Wait_player控制器play_game控制器等,他們都只會有一個顯示操作。但是這看起來很笨拙,並且更難以在同一個控制器中遵循所有這些相關的操作。

回答

1

你需要思考的名詞在你的系統,而不是你的動詞。 REST處理名詞 - 創建,閱讀,更新和刪除THINGS。你的系統中有什麼東西?

看起來你有標題和遊戲等

的RESTful API需要接近問題的不同方式。

關於REST風格的WCF服務,這link會談,而是在一個RESTful的方式思考應該在你的領域也同樣適用的東西。

2

這不只是看上去很笨拙和更困難,可以肯定的是。 REST不是一切

但是你可以綁定pre_start創建,完成刪除,播放更新,等待顯示, 那麼你還是留下了把按鈕操作的地方(我建議創造一個更美好的名字)

PS:set_titles應該private

5

首先,我會考慮一個RESTful設計是否是該控制器的最佳選擇。有些域名在REST中並不適合,如果您嘗試將它們堵塞在其中,則會增加工作量和混淆。我不太瞭解您的應用程序以回答這個問題,但這是需要思考的問題。

如前所述,REST涉及名詞。看看你發佈的內容,我看到的主要名詞是遊戲。所以爲了使它成爲RESTful,你所謂的「prestart」可能是new,你的「play」可能是create。 「完成」可以是destroy。 「等待」可以保持「等待」。並非RESTful控制器中的每個操作都必須是標準的七個操作之一。我不認爲有任何RESTful相當於「等待」。

你也有按鈕。如果不知道更多關於你的應用的信息,很難說,但也許應該有自己的控制器。通常在RESTful Rails應用程序中,每個不同的實體通過七個標準操作中的一個或多個獲取其自己的控制器。

「如何實現RESTful化 - 我只能想到創建控制器等Wait_player控制器等。」

這種方法更像是想爲每個想要做的動作創建一個控制器。 Intead,請嘗試考慮您想要採取行動的每個事情的控制器。例如,代替WaitPlayer控制器,請使用show,new,等(標準RESTful操作)將其設爲Player控制器,然後再添加wait操作。

+0

這個答案相當不錯,但我還想提一下,在這種情況下,所有這些「行爲」更像是州。除了神祕的「按鈕」。通過將所有這些移動到模型的「狀態」元素中,並僅「更新」狀態,可以使其變得非常RESTful。 – 2009-07-08 03:26:39

相關問題