我正在设计一个类似于REST的API,用于基于YUI的客户端的分页数据检索。 对于GET请求,REST URL如下所示:
/app/catalog/data?startIndex=<int>&results=<int>&sort=<sting>&dir=<string>
所有参数都是可选的,即如果没有给出参数,则将转储来自DB的所有数据。 现在说数据库中只有1000条记录。按照以下要求进行:
/app/catalog/data?startIndex=1100&results=25
如果请求没问题,如果数据库的分页结果仍然为空,我应该返回什么状态代码?!我无法确定这是204
还是404
。
生成的媒体类型是JSON和CSV。
答案 0 :(得分:8)
我认为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.
听起来和案件完全一样。
答案 1 :(得分:7)
我无法确定这是
204
还是404
。
都不是。只需返回200
一个空结果(空XML文档或JSON数组,无论你使用什么)。通常我使用带有分页视图的REST服务,因此结果页面返回总记录数。这将有助于客户实现错误。但从技术上讲,这没有错。
使用204
进行DELETE
次操作(实际上没有内容可以返回)和PUT
。
BTW(大胆的矿井):
如果没有给出参数,将转储来自DB的所有数据
相信,你不想这样做......
答案 2 :(得分:1)
您通常以什么格式返回结果?我倾向于让这204或甚至200返回一个空列表。
答案 3 :(得分:1)
我会使用以下之一:
选择最适合您的API工作方式的一种。 我认为在这种情况下返回错误(4xx +错误信息)是安全的,因为以下假设之一可以超出偏移量: