分页结果上的REST状态代码204

Mic*_*l-O 3 rest pagination http-status-codes

我正在设计一个类似于REST的API,用于基于YUI的客户端的分页数据检索.对于GET请求,REST URL如下所示:

/app/catalog/data?startIndex=<int>&results=<int>&sort=<sting>&dir=<string>
Run Code Online (Sandbox Code Playgroud)

所有参数都是可选的,即如果没有给出参数,则将转储来自DB的所有数据.现在说数据库中只有1000条记录.以下是:

/app/catalog/data?startIndex=1100&results=25
Run Code Online (Sandbox Code Playgroud)

如果请求没问题,如果数据库中的分页结果仍然为空,我应该返回什么状态代码?!我不能决定这是否是204404.

生成的媒体类型是JSON和CSV.

Mic*_*itz 11

我会说204是最合适的.请求成功,但没有结果.

10.2.5 204 No Content

The server has fulfilled the request but does not need to return an entity-body, and might want to return updated metainformation.
Run Code Online (Sandbox Code Playgroud)

听起来和案子完全一样.


Tom*_*icz 7

我不能决定这是否是204404.

都不是.只返回200一个空结果(空XML文档或JSON数组,无论你使用什么).通常我使用带有分页视图的REST服务,因此结果页面返回总记录数.这将有助于客户实现错误.但从技术上讲,这没什么不对.

使用204DELETE操作(真的没有内容返回)和PUT.

BTW(大胆的矿井):

如果没有给出参数,则将转储来自DB的所有数据

相信,你不想这样做......

  • 来自httpbis,这是IETF工作组正在进行的工作,以清除HTTP中的一些含糊之处:"204响应允许服务器指示该操作已成功应用于目标资源,同时暗示用户代理不应该远离当前的"文档视图"(如果有的话)." 它不是要将视图更改为空集; 它的目的是在不改变视图的情况下完成工作.见http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-19#section-7.2.5 (2认同)