在使用回调开发API时使用的方法是什么?

时间:2017-04-20 20:36:07

标签: rest api

我应该使用什么方法来开发一个接收两个动作并返回结果的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

  • 如何将结果返回给玩家?
  • 对象播放器是否应该等待响应或询问结果?
  • 使用回调开发API的最佳方法是什么?
  • 解决此类问题的其他任何方法?

感谢。

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的东西,以便客户端在发生更改时立即从服务器获取。它主要是类似的设计,但服务器立即通知所有客户端更新而不是客户端轮询。