如果我们使用Link Header分页,如何返回JSON API中的总条目

时间:2012-04-02 14:24:59

标签: api rest

我开始实现REST API。我有一个请求在具有多个条目的资源上进行。为了实现分页,我确实喜欢Github选择实现它。

我定义了一个HTTP Header Link,我在其中添加了下一个/上一个/第一个/最后一个链接。

Link: <https://api.github.com/repos?page=3&per_page=100>; rel="next",
  <https://api.github.com/repos?page=50&per_page=100>; rel="last"

在我的身体里只有我的参赛作品,没有别的。但现在我想知道总共有条目。我不能在页面数和per_page条目之间进行乘法运算,因为结果不准确。

那我怎么办才能把这个号码归还给参赛作品呢?我想在我的回答X-total-entries中添加一个新的HTTP标头。但我不知道是否有更好的技术。

1 个答案:

答案 0 :(得分:1)

当我尝试决定是将一些数据放入标题还是放入正文时,我会问自己这是应用程序或协议的一个特性?在您的情况下,分页是应用程序的一个功能吗?用户是否知道他正在查看哪个页面?是向用户显示的项目总数?如果答案是肯定的,那么我会将信息放入正文。然后,正文不仅仅是一个项目列表,而是一个页面的表示,包含显示它所需的所有信息和控件。只有当分页是内部协议细节时,我才会考虑将链接和项目计数放入标题中。我知道这听起来可能是一种相当抽象的思维方式,但是如果分页细节需要一直到应用程序的顶部,那么将这些信息与正文分离并将其放入标题中几乎没有什么好处。