REST API 状态代码分页

REST API Status Code Pagination

我目前正在使用 Jersey Framework 编写 REST API。我遵循 HATEOAS 原则,用户只能通过我的回复 body 或 headers 中给定的链接浏览 api。在一些资源中,我实现了分页功能。不过我想知道,当用户(HTTP 状态代码)不遵守我的界限并且就像随机发出请求时,我应该告诉用户什么(HTTP 状态代码),而请求的页面实际上是 "out of bounds"。目前我只是 return 一个 null Collection,但我认为作为一个用户,我无法从这样的回应中得到什么。我考虑过使用状态代码 "Not Found",但我不确定这是否合适。我真的很想忠于 REST,这意味着我忠于 HTTP。那么谁能给我建议,甚至告诉我是否真的有规则可以解决我的问题?

也许是一个具体的例子:

,所以请求 http://...../resource?page=0,return 是第一页。 我的问题是,对于 http://...../resource?page=4 的请求,我应该 return 做什么?目前我只是 returning null,但我认为这不是正确的回应。 提前致谢

编辑: 如果请求的页面是 "empty",我只是询问预期的响应。我知道固定页面大小的设计可能注定无法满足未来的变更请求,但由于这个 API 是微服务的一部分,所以会有 none,除非我们团队内部发生争执:)

404 not found 是越界访问的适当 return 代码。

但是您应该考虑更改您的资源标识符 (URI)。根据 URL 参数返回 404200 不是一个好的设计。

最好将每个页面都视为单一资源。 HATEOAS 也是如此。

 .../resource/page/0  #200 + return link in header to next resource  .../resource/page/1
 .../resource/page/4  #404 + return link to first resource  .../resource/page/0)

如果没有其他方法(例如范围访问),使用 URL 参数应该是最后的选择。