我目前正在使用Jersey Framework编写REST API。我遵循HATEOAS原则,用户只应通过我的响应正文或标题中的给定链接移动api。在一些资源上,我实现了分页功能。我当时想知道,当他没有遵循我的界限时,我应该告诉用户(HTTP状态代码),并且就像随机发出请求,其中所请求的页面实际上是超出范围"。目前我只返回一个null集合,但我认为作为一个用户,我不能用这样的响应做出一些东西。我考虑使用状态代码" Not Found"但我不确定这是否合适。我真的想要忠于REST,这意味着我坚持使用HTTP。那么,任何人都可以给我建议,甚至告诉我是否确实存在我的问题规则?
也许是一个具体的例子:
,因此请求http://...../resource?page=0
,返回第一页。
我的问题是,我应该为请求http://...../resource?page=4
返回什么?目前我只是返回null,但我不认为这是正确的回应。
提前致谢
编辑: 我只询问预期的响应,如果请求的页面是"空"。我知道固定的页面大小设计可能会注定未来的变更请求,但由于这个API是微服务的一部分,所以除了我们团队内部的斗争之外,没有任何东西:)
答案 0 :(得分:-2)
404 not found
是越界访问的适当返回码。
但您应该考虑更改资源标识符(URI)。根据网址参数返回404
或200
并不是一个好设计。
将每个页面视为单一资源会更好。对于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参数应该是最后一个选项。