当给定 ID 是有效 ID 但没有匹配文档时,REST API 中的响应状态代码应该是什么?

What should the response status code be in a REST API when the given ID is a valid ID but there's no matching document?

我正在为我的 Express 应用程序使用 MongoDB,我知道当 ID 对相应数据库无效时,响应状态代码为 400(错误请求)。但是,如果该 ID 是有效 ID 但没有包含该 ID 的文档(例如,该文档可能已被删除)怎么办?我猜状态码应该是 404 但我不确定,你有什么意见?

What should the response status code be in a REST API when the given ID is a valid ID but there's no matching document?

404

The 404 (Not Found) status code indicates that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

如果您需要传达 为什么 您返回 404,请在 body of the response:

中完成

the server SHOULD send a representation containing an explanation of the error situation, and whether it is a temporary or permanent condition.


Why not 204?

主要是因为这不是 204 的用途:

The 204 response allows a server to indicate that the action has been successfully applied to the target resource, while implying that the user agent does not need to traverse away from its current "document view" (if any).

对于 GET 请求,发出当前表示长度为 0 字节的信号的适当方式是带有 Content-Length 字段的 200 响应。

也就是说,源服务器可以自行决定缺少具有正确 id 的文档是否意味着没有当前表示,或者当前表示是否为空。换句话说,源服务器存在“文档”是隐藏在web门面后面的实现细节。