2012-04-02 42 views
1

我开始实施REST API。我有一个请求使用多个条目的资源。为了实现分页,我喜欢Github选择实现它。如果我们通过链接头使用分页,如何返回我们的JSON API中的总条目

我定义了一个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" 

在我的身体只有我的项目,没有别的。但现在我想知道总共有多少条目。我无法在页面数量和页面数量之间进行乘法运算,因为结果不准确。

那么我该如何将这个数字返回给条目?我想在我的回答X-total-entries中添加一个新的HTTP标题。但我不知道是否有更好的技术。

回答

0

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