微服务公开了一个规范的REST API来处理两个资源:teams
和matches
,其中两个团队进行一场比赛并取得一个得分。
post /team
将添加一个新团队get /teams
将吸引所有团队get /team/{id}
将返回一个特定的团队为match
资源提供了相同的规范实现。现在,此微服务有两个客户端应用程序:
我们添加以下约束:
team
资源中返回此摘要信息,因为它可能在计算上很昂贵为此用例设计API的合适方法是什么?
具有查询参数的单个端点,这不会导致端点数量激增,但返回的响应会彼此非常不同
多个端点(内部摘要,外部摘要,得分摘要,故障摘要)
答案 0 :(得分:0)
您可能知道,在规范的其余REST API设计中,路径参数和查询参数用于不同的目的:
路径:标识特定资源/资源,
查询:排序/过滤 资源。
在您的用例中,我们必须处理汇总数据,这可以看作是一种不同的资源,因为总的来说,它包含的性质与/ teams和/ matches路径中的数据性质不同。
在我看来,针对该用例的一个好的设计可能是执行 / stats路径,然后通过查询参数对其进行过滤(匹配,胜利,失败等)。 ..),这有助于提高清晰度,并且不会过多地混淆api,将来您还可以通过一种易于维护的方式轻松添加更多统计信息资源。