2016-08-04 63 views
0

我正在构建一个REST API。我期望解决的一个问题的简单示例涉及2个域实体:posts &评论。目前,对http://myapidomain.com/posts的GET请求返回一个帖子集合,其中每个帖子都包含对此特定帖子的评论链接。我还会允许在响应中扩展评论链接的可能性,以便评论列表按行显示,而不是指向它们的网址。每种方法都有优点和缺点,但包含两种选择的很好理由。嵌套资源是否需要分页?

我的问题是说例如我的GET请求/ posts会返回一个分页列表(例如页面大小为10),其中包含注释列表而不仅仅是一个链接......我需要分页嵌套的资源吗?我担心一个帖子可以有无限次的评论,因此,一个10帖子的列表可能有一个或多个帖子,对于一个帖子有多个评论100秒。那么内部/嵌套资源是否也需要分页,或者是否有一些标准方法来处理这种情况?

回答

1

包含收集子资源的链接是一种很好的做法。如果客户端需要收集,则可以执行对链接的新请求。

但是,如果由于某种原因,您需要为每篇文章预先加载一些评论,我会考虑仅包括评论的第一页并提供加载下一页的链接。

{ 
    "data": [ 
    { 
     "id": 1, 
     "title": "It's a post", 
     "content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit...", 
     "comments": { 
     "data": [ 
      { 
      "content": "It's a comment", 
      "author": "John Doe" 
      }, 
      { 
      "content": "It's comment", 
      "author": "Jane Doe" 
      }, 
      ... 
     ], 
     "paging": { 
      "next": "http://api.example.com/posts/1/comments?page=2&size=10" 
     } 
     } 
    }, 
    ... 
    ], 
    "paging": { 
    "previous": "http://api.example.com/posts?page=1&size=10", 
    "next": "http://api.example.com/posts?page=3&size=10" 
    } 
}