【问题标题】:Proper way to respond to a rest paged request响应休息分页请求的正确方法
【发布时间】:2020-01-29 19:39:17
【问题描述】:

我想在 Spring 中创建一个符合 REST 的端点。端点应该允许分页。

请求很简单,GET到url/resource?page=1&pageSize=20。 问题是请求。

我发现了两种返回数据的大方法:

  1. 返回包含以下内容的自定义对象:
{
    "page": 1,
    "pageSize": 20,
    "content": [
         {...},
         {...}
         ...
    ]
}

这个方法的问题是它不再返回一个资源,它返回一个对资源的包装器。

  1. 在您提供来自后端的响应时设置 X-Total-Count 自定义标头:
[
   {...},
   {...}
   ...
]

这解决了资源问题,但它使端点更难使用,这是违反直觉的,因为它还需要额外的工作来实现。

我想知道,哪些标准使用更广泛,为什么?对此有什么“新”方法?我应该远离什么?有没有办法同时满足这两种需求?

提前致谢!

【问题讨论】:

标签: java spring rest spring-boot pagination


【解决方案1】:

我在我使用的 API 中看到的最常见的做法是您使用对象包装器的第一个示例:

{
    "page": 1,
    "pageSize": 20,
    "content": [
         {...},
         {...}
         ...
    ]
}

通常,此对象包装器通过对GET /resources 端点的任何调用来实现。另一方面,当用户调用GET resource/{resourceId} 端点时,没有对象包装器。

这只是我对其他 API 使用的看法,但我已经编写了近 100 种不同的 API 集成,所以我看到的数量相当可观。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    相关资源
    最近更新 更多