首页 > 解决方案 > Rest API 上的相关 HTTP 状态码

问题描述

我有一个场景,通过在 Path 变量中传递无效数据来从数据库中获取数据。由于提供的数据无效,因此它从数据库中触发“500 内部服务器错误”,因为找不到数据。并将 HTTP 状态自定义为 404(NOT_FOUND),因为找不到数据。

想了解,除了 404 之外,这种情况下最好的 HTTP 状态代码是什么?

标签: resthttp-status-codes

解决方案


HTTP 是一种应用协议,其应用领域是通过网络传输文档(Jim Webber,2011)。我们在响应中使用的状态码是来自文档传输域的元数据——也就是说,我们关心消息的含义,而不是我们的实现发送它的原因。

特定于您的域的信息(将问题的详细信息传达给客户端)属于响应的消息正文。状态码在那里,因此不知道您的域细节的通用组件可以“做正确的事情”——正确的事情受到 HTTP 语义的约束。

Michael Kropat 发布的流程图可能有助于选择正确的状态代码。或者,您可以查看HTTP 状态代码注册表,其中包含指向定义每个代码语义的标准的链接。

从广义上讲,如果问题出在请求上,那么我们使用4xx消息类中的一些消息;请求中的问题是客户端错误。404 专门将客户端的注意力引导到目标 uri。

因此,如果请求是错误的,因为编码到路径段中的信息不正确,那么 404 是正确的选择,因为它告诉客户端到哪里寻找问题。您会在别处寻找的唯一原因是 404 语义的某些其他部分是否不适合您的情况。


推荐阅读