API开发:何时返回BAD REQUEST HTTP状态代码(REST)

Geo*_*app 3 rest jax-rs jersey http-error

我们正在编写REST服务,并且当有人请求具有不存在的父ID的资源时,如何做有争议.

示例:您要求提供与公司关联的人员列表,因此您GET使用ID 1,但该公司ID不存在.

我认为REST的定义说我们会简单地返回一个空列表(导致a HTTP 204 (No Content)),因为根据规范,HTTP Bad Request仅用于格式错误的语法:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

由于语法格式错误,服务器无法理解请求.客户端不应该在没有修改的情况下重复请求.

我认为更清楚的是没有要解释的错误,您请求的资源不存在.

关于最佳实践的想法?

这里有一个SO讨论:HTTP 400(错误的请求)用于逻辑错误,而不是格式错误的请求语法,虽然它有点抽象,如果我发布这个,或者只是使用那个问题,我就会被撕裂.

Dar*_*ler 6

如果你这样做

GET /company/1
Run Code Online (Sandbox Code Playgroud)

并且不存在id为1的公司,那么我认为相应的HTTP状态代码是404 - 找不到.

但是,如果你这样做,

GET /companies?id=1
Run Code Online (Sandbox Code Playgroud)

然后我会返回一个200和一个空的公司列表.