java - 响应休息分页请求的正确方法

标签 java spring rest spring-boot pagination

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

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

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

  1. 返回一个自定义对象,其中包含:
{
    "page": 1,
    "pageSize": 20,
    "content": [
         {...},
         {...}
         ...
    ]
}

此方法的问题在于它不再返回资源,而是返回资源的包装器。

  • 当您从后端给出响应时设置 X-Total-Count 自定义 header :
  • [
       {...},
       {...}
       ...
    ]
    

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

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

    提前致谢!

    最佳答案

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

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

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

    这只是我对其他 API 使用情况的看法,但我已经编写了近 100 个不同的 API 集成,因此我已经看到了相当多的集成。

    关于java - 响应休息分页请求的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58169088/

    相关文章:

    node.js - Sequelize JS 主键相关的包括

    java - HttpPost -> 重定向 -> 需要响应的位置或正文

    java - Bukkit 插件已初始化

    java - 为什么 Java 的 `.dateLastModified` 在某些 Windows 7 文件中会被截断?

    java - 如何为 Java Spring REST API 实现 AngularJS JWT 身份验证

    google-app-engine - 是否有类似 Google Analytics 的解决方案来跟踪对 Web 服务的 REST 调用?

    java - 如何验证正则表达式中的可选子字符串

    spring - 有没有办法在 TestExecutionListener 中获取对 Spring 应用程序上下文的引用?

    java - Spring - 从使用 UTF-8 的文件加载

    api - REST API : Where should I code my workflow?