rest - 如何通过 RESTful API 公开有关资源的统计信息?

标签 rest laravel

我正在为我的网络应用程序构建一个 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/

    相关文章:

    rest - 使用 TFS REST API 获取迭代中的所有工作项

    java - 如何在 Jersey 生成的 WADL 文件的响应中包含 HTTP 状态代码

    php - "php artisan serve"命令在 Laravel 命令行中不起作用?

    php - Laravel 4.2 从数据库创建分组列表下拉列表

    php - 拦截 Laravel 路由

    php - Laravel/Eloquent 具有模型特征的碰撞

    rest - 就 RESTful 和无状态而言,拥有诸如/currentUser 之类的 REST 资源是否合法?

    angularjs - 如何保护RESTful服务?

    java - 有没有办法禁用 Thymeleaf,或者只为某些 REST 调用启用?

    javascript - VueJs 路由器链接在实时服务器上不起作用