如何在REST中更正模型“摘要”?

时间:2018-07-04 09:32:23

标签: rest microservices

微服务公开了一个规范的REST API来处理两个资源:teamsmatches,其中两个团队进行一场比赛并取得一个得分。

  1. post /team将添加一个新团队
  2. get /teams将吸引所有团队
  3. get /team/{id}将返回一个特定的团队

match资源提供了相同的规范实现。现在,此微服务有两个客户端应用程序:

  • 一个公共网站,需要为每个团队显示比赛总数,获胜总数和总损失
  • 需要显示最大损失的私人网站和获得最多红牌的玩家

我们添加以下约束:

  1. 我们不想在team资源中返回此摘要信息,因为它可能在计算上很昂贵
  2. 这两个摘要具有不同的权限:根据HTTP请求中的标头,我们可以接受/拒绝该请求

为此用例设计API的合适方法是什么?

  • 具有查询参数的单个端点,这不会导致端点数量激增,但返回的响应会彼此非常不同

  • 多个端点(内部摘要,外部摘要,得分摘要,故障摘要)

1 个答案:

答案 0 :(得分:0)

您可能知道,在规范的其余REST API设计中,路径参数和查询参数用于不同的目的:

  

路径:标识特定资源/资源,
  查询:排序/过滤   资源。

在您的用例中,我们必须处理汇总数据,这可以看作是一种不同的资源,因为总的来说,它包含的性质与/ teams和/ matches路径中的数据性质不同。

在我看来,针对该用例的一个好的设计可能是执行 / stats路径,然后通过查询参数对其进行过滤(匹配,胜利,失败等)。 ..),这有助于提高清晰度,并且不会过多地混淆api,将来您还可以通过一种易于维护的方式轻松添加更多统计信息资源。