基于回合的游戏的REST API?

我们正在开发基于回合的多人游戏,为此我们需要实现一些后端function,这将跟踪玩家的数据和游戏。

我的第一个方法是使用NodeJS和MongoDBdeviseREST API,让客户端访问这些数据。 我并不是很了解Web服务,但据我所知,REST涉及整个数据模型的信息交换。 所以我们可以说我有一个游戏模型,其中包含比分,棋盘状态和参与者的信息,那么我不能只发送一个请求来检索某个游戏的分数,但是我需要发送一个GET请求游戏模式,然后从它读取分数,如下所示:

GET http://restserver.com/games/12d3k351s 

这是正确的还是我做了一个错误的假设?

如果是这样的话,我会想多次获得一个完整的游戏列表,而不是整个棋盘状态,这将是一个更大的数据块。 将棋盘状态分成不同的模式是否明智?例如,作为减less每次游戏信息请求传送的不必要数据量的手段?

如果我不得不devise数据库而不使用REST API,那么我肯定会把棋盘状态保持为游戏集合中Game类的属性,所以这听起来不是最好的做法。

我对json-api有很好的体验。 这是REST-ISH,涵盖了近来构buildapi服务器时可能出现的许多需求。 你的确切的情况,部分得到,在那里被称为稀疏的字段集 。

客户端可以通过包含fields[TYPE]参数来请求端点只返回响应中的特定字段 。

 GET /articles?include=author&fields[articles]=title,body&fields[people]=name HTTP/1.1 Accept: application/vnd.api+json 

无论您是否将游戏板数据与游戏数据一起存储,都无关紧要。 您可以查询没有板子数据的游戏数据。 MongoDB允许你这样做。

这里是一个例子:

 db.inventory.find( { status: "A" }, { item: 1, status: 1 } ) 

这意味着“只返回状态为”A“的库存项目的项目,状态和_id字段。

你可以做

 db.games.find({}, { gameData: 1, gameStatus: 1 }); 

并获得所有游戏的gameData和gameStatus。

这是正确的还是我做了一个错误的假设?

错误的假设。 REST API不是关于公开数据模型,而是关于如何公开集成协议。

绝对没有理由,你不能有一个文件,显示你目前的比分是什么。

如果是这样的话,我会想多次获得一个完整的游戏列表,而不是整个棋盘状态,这将是一个更大的数据块。 将棋盘状态分成不同的模式是否明智?例如,作为减less每次游戏信息请求传送的不必要数据量的手段?

从这个问题开始 – 你将如何做一个网站 ? 许多不同的适合用途的文档,以及带有语义提示的导航链接,以帮助消费者find他们需要的文档。

去做。