繁体   English   中英

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

[英]How to best represent dynamic game actions in a REST API?

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

我已经弄清楚了它的一部分,但是我在如何使用这种API来实现动态动作方面苦苦挣扎。

例如,我有这种动作:

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

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

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

但这不是非常RESTful的,因为URL的最后一部分是动词而不是名词。 而且,没有数据可以实际过帐。

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

当主要动作是CRUD或认为SQL(插入,选择,更新,删除)时,RESTful API(动词由HTTP方法完整描述,资源由URL完整描述)最有效。 因此,请考虑如何以类似于CRUD的方式描述每个动作:

  • 开始游戏就像创造游戏。 它一创建就开始:
    POST /games
  • 暂停游戏可以看作是将游戏移入“暂停的游戏”类别:
    PUT /games/paused/123
  • 结束游戏就像删除游戏:
    DELETE /games/123
    或至少喜欢将其从“活跃”游戏中删除:
    DELETE /games/active/123

最后,由您自行设计API的最佳方式。 大多数现实世界中的“ RESTful” API并不是100%RESTful。 在某些时候,设计纯度必须屈服于实用主义。

我的建议:保持GETPUTDELETE等等(不是POST所有东西)幂等。 POST应该是唯一的非幂等HTTP方法。

我认为,我建议采用以下路线:
PUT /games/213
内容:
{game: {paused: false}}

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

同样, PUT可以是POST

那只是我的两分钱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM