我正在为我的Web应用程序构建一个API,目前为止已经公开了我的应用程序使用的所有资源,例如/users
,/roles
,/posts
等都没有问题。
我现在停留在如何以RESTful方式公开有关其中某些资源的统计信息上。 拥有statistics
资源似乎不正确,因为GET /statistics/1
可以是任何东西,并且结果可能会更改每个请求,因为统计信息是实时的,因此将不可缓存。
背景:
对于系统中的每个/users
,应用程序都会定期向Steam的API查询其正在播放的/games
和正在播放的/servers
,并将此信息以及时间戳存储在/states
资源中。
汇总此信息可以显示/statistics/games/current-usage
和statistics/servers/current-usage
标准HTML页面上最受欢迎的游戏和服务器。说明性屏幕截图:servers,games(在不同时间拍摄)。
编辑:基本资源的样本数据
"state": {
"id": 292002,
"user_id": 135,
"game_id": 24663,
"server_id": 135,
"created_at":"2014-06-22 21:12:03"
},
"user": {
"id": 112,
"username": "ilumos",
"steam_id_64": "76561197970613738"
},
"server": {
"id": 135,
"application_id": 24663,
"name": null,
"address": "192.168.241.65",
"port": "0"
},
"game": {
"id": 24663,
"name": "DEFCON",
"steam_app_id": 1520
}
编辑2:REST是否允许使用时间戳作为资源标识符的端点? ,例如:
GET /statistics/1403681498/games
得到这样的响应:[
"game": {
"id": 123,
"name": "DEFCON",
"users": [
{
"id": 7654,
"username": "daryl",
"server": {
"id": 127,
"ip": "123.123.123.123",
"port": "27960"
}
},
{
"id": 135,
"username": "ilumos"
},
]
}
]
最佳答案
您有各种并非完全不合理的选择。
你可以
统计数据?有很多统计数据吗?如果您要跟踪的只是玩家数量,则类似GET/games?orderBy = numPlayers-&offset = 0&limit = 10的方法可能会起作用。
/statistics/{statisticId}
端点。这并不是天生的RESTful。 /games/{gameId}/statistics
端点。 /statistics/games/{gameId}
端点。 确实,我们没有办法告诉您实现此目标的最佳方法是什么,因为我们没有足够的信息。
关于rest - 如何通过RESTful API公开有关资源的统计信息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24392641/