api - 嵌套资源也需要分页吗?

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

我正在构建一个 REST api。我要解决的问题的一个简单示例涉及 2 个域实体:帖子和评论。当前对 http://myapidomain.com/posts 的 GET 请求返回一个帖子集合,其中每个帖子都包含指向关于该特定帖子的评论的链接。我还将允许在响应中扩展评论链接,以便评论列表按行显示,而不是指向它们的 url。每种方法都有利弊,但有充分的理由包括这两种选择。

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

最佳答案

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

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

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

关于api - 嵌套资源也需要分页吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38762719/

相关文章:

java - 无法使用可嵌入 ID 创建新实体

java - 如何阻止 Payara 中的字符串被解释为日期时间?

java - API服务的数据不更新,只在清除缓存后更新

php - JSON API 数据从数组到表

php - 使用 PHP 在数据库中插入 Paypal 付款日期

R:在将数据发布到使用管道工创建的 REST API 的同时在网页上打印绘图

json - RESTful JSON 的链接 header 与链接元素

java - JPA + PostgreSQL : Only time being persisted

hibernate - 需要帮助追踪 JPASystemException 的原因

python - Pyramid 中的多重身份验证策略