基于回合的游戏的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他们需要的文档。
去做。