REST最佳实践:使用列表API返回计数

时间:2015-11-27 07:25:24

标签: rest

我们有一个REST服务端点

OUR_DOMAIN / API / V2 /用户

此端点返回应用程序中活动用户的列表。现在我们还需要显示总用户数。为此,我们考虑了两种方法

  1. 添加另一个字段以响应相同列表服务端点的计数
  2.   

    {count:15,用户:[{...},{...}]}

    1. 开发单独的服务以仅返回计数
    2.   

      OUR_DOMAIN / api / v2 / users:用户列表

           

      OUR_DOMAIN / api / v2 / userscount:用户数

      我个人更喜欢选项1,但选项2似乎也符合逻辑,因为根据REST最佳实践,一个REST端点应仅用于一个特定目的。请根据REST最佳实践建议哪个选项更好,为什么?

      由于

2 个答案:

答案 0 :(得分:0)

事实上,有两种方法可以做到这一点:

  • 在有效负载中。这对应于您的第一个选项。它表示返回数据的结构与平面结构不同,但它确实可以接受

  • 标题。您可以为此添加X-total-count这样的标头。如果要实现分页,还会链接Link标头。有关示例,请参阅Github API:https://developer.github.com/v3/#pagination

由于您在资源路径中使用特定动词,因此返回元素数量的单独服务并非真正REST ...

希望它可以帮到你, 亨利

答案 1 :(得分:0)

在您的特定情况下,我建议选项1.从REST角度来看,它是完全可以接受的,并且是一种广泛使用的方法。在更一般的层面上,如果您的服务不支持分页,您应该让调用者有机会知道在实际发送请求之前将返回多少结果。目的是让呼叫者事先知道响应是否会“淹没”他的结果太多。在这种情况下,选项2是可以接受的,即使它增加了添加单独调用的(可避免的)开销。作为最后一点,我建议添加另一个名为“size”的路径片段,以便url变为例如。

DOMAIN/api/v2/users/size

没有动词。