如何在REST API中最好地表示动态游戏操作?

时间:2013-04-11 03:54:47

标签: rest post dynamic restful-url

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

我有一部分想到了它,但是我正在努力解决如何使用这种API实现动态操作。

例如,我有这样的行动:

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

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

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

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

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

2 个答案:

答案 0 :(得分: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等等(不是POST的所有内容)幂等。 POST应该是唯一的非幂等HTTP方法。

答案 1 :(得分:0)

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

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

此外,PUT可以是POST

那只是我的两分钱。