我应该使用什么方法来开发一个接收两个动作并返回结果的API(赢/输/抽奖)?
Scattegories游戏
示例:
以字母L开头的动物
玩家1 - 移动:狮子 球员2 - 移动:里昂
thegame.com/api/v1/game/1/player/1/move/1
thegame.com/api/v1/game/1/player/2/move/1
感谢。
答案 0 :(得分:1)
复数更常见,即:
thegame.com/api/v1/games/1/players/1/moves/1
我认为直接在游戏中移动可能更合乎逻辑,独立于玩家:
thegame.com/api/v1/games/1/moves/1
每次移动都有一个相关的玩家进行移动。这样可以轻松重新运行所有动作并了解游戏历史。
对于玩家来说,他们的规范网址将独立于游戏
thegame.com/api/v1/players/1
如果你愿意,你仍然可以通过某种方式访问玩家的所有游戏以及游戏的所有玩家
thegame.com/api/v1/players/1/games
thegame.com/api/v1/games/1/players
假设这是一个与人类相互等待的2(或更多)玩家游戏,你可能会让每个客户每隔几秒钟对游戏进行一次轮询。例如如果客户端已进行最新移动,则会开始轮询URL thegame.com/api/v1/games/1?moves_since=123456
。这将返回自时间戳123456以来所有移动的列表。时间戳可以是此用户最后一次移动的时间。一旦它返回有效的移动,客户端就会向用户显示该移动并等待他们自己移动。如果有多个玩家,“游戏”资源可能包含一个像“nextMover”这样的字段,以指示哪个玩家接下来要移动。
更现代的方法是使用类似Websockets的东西,以便客户端在发生更改时立即从服务器获取。它主要是类似的设计,但服务器立即通知所有客户端更新而不是客户端轮询。