1

我想创建一个简单的纸牌游戏并将所有游戏逻辑放在服务器端。然后,客户端应用程序将通过 REST API 与后端交互。

我已经弄清楚了其中的一部分,但是我正在努力解决如何使用这种 API 实现动态操作。

例如,我有这种动作:

  • 开始游戏
  • 翻转卡
  • 检查用户猜测
  • 暂停游戏
  • 结束游戏

特别是,我将如何处理开始或暂停游戏?我可以做这样的事情:

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

但这不是很 RESTful,因为 URL 的最后一部分是动词而不是名词。此外,实际上没有要发布的数据。

我将如何实施这种动态操作?有什么建议吗?

4

2 回答 2

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。在某些时候,设计纯度必须屈服于实用主义。

我的建议:保持GETs、PUTs、DELETEs 等(所有不是 a 的POST)幂等。POSTs 应该是唯一的非幂等 HTTP 方法。

于 2013-04-11T04:01:18.970 回答
0

在我看来,我会推荐这样一条路线:
PUT /games/213
内容:
{game: {paused: false}}

如果游戏没有进行,那么它就会暂停。我不知道你的模型是什么样的,但我想所有的游戏都会在暂停状态下创建,然后我可以运行上面的请求来启动它。

此外,PUT可能是POST.

那只是我的两分钱。

于 2014-10-17T16:15:53.617 回答