【问题标题】:Do nested resources need to be paged too?嵌套资源也需要分页吗?
【发布时间】:2016-12-10 07:17:55
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-07-24
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-08
      相关资源
      最近更新 更多