我正在为我的网络应用程序构建一个 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}
端点。这本身并不是不稳定的。 /games/{gameId}/statistics
端点。 /statistics/games/{gameId}
端点。 真的,我们没有办法告诉您实现这一点的最佳方法是什么,因为我们没有足够的信息。
关于rest - 如何通过 RESTful API 公开有关资源的统计信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24392641/