【发布时间】:2019-12-15 01:06:53
【问题描述】:
我有一个场景,通过在 Path 变量中传递无效数据来从数据库中获取数据。由于提供的数据无效,因此它从数据库中触发“500 内部服务器错误”,因为找不到数据。 并将 HTTP 状态自定义为 404(NOT_FOUND),因为未找到数据。
想了解,对于这种情况,除了 404 之外,最好的 HTTP 状态代码是什么?
【问题讨论】:
我有一个场景,通过在 Path 变量中传递无效数据来从数据库中获取数据。由于提供的数据无效,因此它从数据库中触发“500 内部服务器错误”,因为找不到数据。 并将 HTTP 状态自定义为 404(NOT_FOUND),因为未找到数据。
想了解,对于这种情况,除了 404 之外,最好的 HTTP 状态代码是什么?
【问题讨论】:
HTTP 是一种应用协议,其应用领域是通过网络传输文档(Jim Webber, 2011)。我们在响应中使用的状态码是来自文档传输域的元数据——也就是说,我们关心消息的含义,而不是我们的实现发送它的原因。
特定于您的域的信息(将问题的详细信息传达给客户端)属于响应的消息正文。状态码在那里,因此不知道您的域细节的通用组件可以“做正确的事情”——正确的事情受到 HTTP 语义的约束。
Michael Kropat published 流程图,可能有助于选择正确的状态代码。或者,您可以查看 HTTP Status Code Registry,其中包含定义每个代码语义的标准的链接。
一般来说,如果问题出在请求上,那么我们使用来自4xx消息类的一些消息;请求中的问题是客户端错误。 404 专门将客户端的注意力引导到目标 uri。
所以如果请求是错误的,因为编码到路径段中的信息不正确,那么 404 是正确的选择,因为它告诉客户端到哪里寻找问题。您会寻找其他地方的唯一原因是 404 语义的某些其他部分是否不适合您的情况。
【讨论】: