2013-04-11 29 views
1

我想創建一個簡單的紙牌遊戲,並把所有的遊戲邏輯服務器端。客戶端應用程序將通過REST API與後端進行交互。如何在REST API中最好地表示動態遊戲操作?

我有一部分想通了,但我正在努力如何使用這種API實現動態操作。

例如,我有這樣的動作:

  • 啓動遊戲
  • 翻轉卡
  • 檢查用戶猜測
  • 暫停遊戲
  • 結束比賽

在特別是,我將如何處理開始或暫停遊戲?我可以做這樣的事情:

POST /games/123/start 
POST /games/123/pause 

但是這不是很RESTful,因爲URL的最後部分將是一個動詞而不是名詞。另外,實際上沒有數據發佈。

我該如何去實施這種動態操作?任何建議?

+0

如果你有一列表示遊戲狀態,那麼你應該可以使用「遊戲/ 123 /狀態」 – 2013-04-11 04:02:17

回答

0

RESTful API - 動詞由HTTP方法完全描述,並且資源完全由URL描述 - 當您的主要操作是CRUD,或者認爲SQL(插入,選擇,更新,刪除)時效果最佳。因此,想想如何以類似於CRUD的方式來描述每個動作:

  • 開始遊戲就像創建遊戲一樣。它只要它的創建開始:
    POST /games
  • 暫停遊戲可以被看作是移動遊​​戲成「暫停遊戲」鬥:
    PUT /games/paused/123
  • 結束了比賽就像是將其刪除:
    DELETE /games/123
    或者至少像「積極」的遊戲水桶將其刪除:
    DELETE /games/active/123

最後,這是給你設計API如何最適合你。大多數真實世界的「RESTful」API不是100%RESTful。在某個時候,設計純度必須符合實用主義。

我的推薦:保持GET s,PUT s,DELETE s等(所有不是POST)冪等。 POST s應該是只有非冪等HTTP方法。

0

在我看來,我會推薦的路線,如:
PUT /games/213
與內容:
{game: {paused: false}}

如果一個遊戲是不會那麼它的暫停。我不知道你的模型是什麼樣子,但我會想象所有的遊戲都會在暫停狀態下創建,然後我可以運行上面的請求來啓動它。

另外,PUT可以是POST

這只是我的兩美分。

相關問題