当未找到具有通过请求正文传递的 id 的对象时的 HTTP 状态代码

Try*_*ing 5 java rest http jax-rs http-status

我将通过举个例子来解释我的疑问。

假设我正在设计一个资源端点POSTstudent并且作为 POST 端点的一部分,我希望teacher传递一个 uuid(除了其他细节之外),这是一个必填字段。这样我就可以将 与 关联student起来teacher。现在,如果teacher给定的资源uuid不存在于我的数据库中,那么我应该抛出什么:

400 (Bad request)
404 (Not found).
Run Code Online (Sandbox Code Playgroud)

我认为400这是正确的事情。

如果我有一个像下面这样的请求,那么我会抛出 404 类似

GET /xyy/teachers/{uuid of a teacher}

如果我错了请纠正我。谢谢。

Ria*_*Ria 0

我更愿意,404因为您请求的资源不可用。如果你看一下 w3.org 规范,他们说的是400

由于语法错误,服务器无法理解该请求。客户端不应在未经修改的情况下重复请求。

由于您的语法没有格式错误,因此对我来说这听起来像是经典的 404。