嵌套资源是否也需要进行分页?

时间:2016-08-04 08:51:33

标签: api rest spring-data-jpa nested-resources

我正在构建一个REST api。我想要解决的问题的一个简单示例涉及2个域实体:posts&评论。目前,对http://myapidomain.com/posts的GET请求会返回一组帖子,其中每个帖子都包含指向此特定帖子的评论的链接。我还允许在响应中扩展注释链接,以便注释列表显示在行中,而不是指向它们的URL。每种方法都有利弊,但包含两种方案的充分理由。

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

1 个答案:

答案 0 :(得分:2)

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

但是,如果由于某种原因,您需要为每个帖子预先加载一些评论,我会考虑只包含评论的第一页并提供加载下一页的链接。

{
  "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"
  }
}