我们的应用程序不直接处理资源,或支持有关创建,更新,删除资源的各种HTTP谓词。我们主要使用“finder”方法返回一组资源。因此,我们可能会有/users?firstName=john
但不包含/users/1
的网址。
我们正在讨论的问题是,如果没有找到名字为“john”的用户,那么最合适的HTTP状态代码是什么。我的观点是应返回204表示空集合,但不返回404,因为集合本身不是资源,因此“未找到资源”不是有效响应。 RFC 3986, section 3.4说 -
查询组件包含非分层数据 路径组件中的数据(第3.3节)用于识别a 资源...
关于资源集合没有任何说法。
思想?
答案 0 :(得分:6)
我同意404状态在这里不合适。我个人会使用200状态和空集合,因为这显然代表了一个"没有结果"响应。
答案 1 :(得分:0)
您使用的是具有过滤器的集合资源(查询参数)。对集合资源的每个请求都应该返回一个集合(可能是一个JSON数组)。
请注意,在所有情况下,都会返回一个collectin,而不是有一个,没有或只有一个匹配。因此,如果使用JSON,响应永远不会为空,但至少包含一个空数组。
要使用的HTTP响应标头必须为200 OK
。客户端需要解析资源表示并检测它可能是空的。