rest - Rest API 上的相关 HTTP 状态码
问题描述
我有一个场景,通过在 Path 变量中传递无效数据来从数据库中获取数据。由于提供的数据无效,因此它从数据库中触发“500 内部服务器错误”,因为找不到数据。并将 HTTP 状态自定义为 404(NOT_FOUND),因为找不到数据。
想了解,除了 404 之外,这种情况下最好的 HTTP 状态代码是什么?
解决方案
HTTP 是一种应用协议,其应用领域是通过网络传输文档(Jim Webber,2011)。我们在响应中使用的状态码是来自文档传输域的元数据——也就是说,我们关心消息的含义,而不是我们的实现发送它的原因。
特定于您的域的信息(将问题的详细信息传达给客户端)属于响应的消息正文。状态码在那里,因此不知道您的域细节的通用组件可以“做正确的事情”——正确的事情受到 HTTP 语义的约束。
Michael Kropat 发布的流程图可能有助于选择正确的状态代码。或者,您可以查看HTTP 状态代码注册表,其中包含指向定义每个代码语义的标准的链接。
从广义上讲,如果问题出在请求上,那么我们使用4xx
消息类中的一些消息;请求中的问题是客户端错误。404 专门将客户端的注意力引导到目标 uri。
因此,如果请求是错误的,因为编码到路径段中的信息不正确,那么 404 是正确的选择,因为它告诉客户端到哪里寻找问题。您会在别处寻找的唯一原因是 404 语义的某些其他部分是否不适合您的情况。
推荐阅读
- jenkins - 詹金斯没有通过 url 值,它说 null
- python - 只执行第一行代码:Python Turtle
- javascript - 未发送 HttpOnly 安全 Cookie
- sql - SQL 更改计数器 - 检查第一个和最终值
- c++ - OpenCV 4.5.2 需要很长时间 (>100ms) 从网络摄像头检索单个帧,Windows 10 上的 C++
- python - 如何拆分字符串并只取python中的第一个字符串(一个数字)?
- events - 如何设置 Consul 将事件发送到注册为给定服务的所有节点
- python - 制作 Python 包 - 在 pyproject.toml 上失败 - 遵循教程并出现错误
- python - 错误消息“int() 参数”和“NoneType”
- c# - 应用程序在 Android 中工作但在 UWP 中不工作(视频和 IndicatorView 不能在 Xamarin Forms UWP 上工作)