gpt4 book ai didi

REST API 状态代码分页

转载 作者:可可西里 更新时间:2023-11-01 16:47:06 26 4
gpt4 key购买 nike

我目前正在使用 Jersey Framework 编写 REST API。我遵循 HATEOAS 原则,用户只能通过我的响应正文或 header 中的给定链接在 api 中移动。在一些资源中,我实现了分页功能。不过,我想知道,当用户(HTTP 状态代码)不遵守我的界限并且就像随机发出请求时,我应该告诉用户什么(HTTP 状态代码),而请求的页面实际上是“越界”。目前我只是返回一个空集合,但我认为作为一个用户,我无法从这样的响应中得到什么。我考虑过使用状态代码“未找到”,但我不确定这是否合适。我真的很想忠于 REST,这意味着我忠于 HTTP。那么任何人都可以给我建议,甚至可以告诉我是否真的有解决我的问题的规则吗?

也许是一个具体的例子:

  • 页面大小 = 10;
  • Collection.size = 27;
  • 请求的页面 = 4;
  • 分页从第 0 页开始

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

编辑:如果请求的页面为“空”,我只是询问预期的响应。我知道固定页面大小的设计可能注定无法满足 future 的更改请求,但由于此 API 是微服务的一部分,因此不会有任何变化,除非我们团队内部发生争执:)

最佳答案

404 not found 是越界访问的适当返回码。

但是您应该考虑更改您的资源标识符 (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 参数应该是最后的选择。

关于REST API 状态代码分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38039983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com