Muh*_*eed 7 http health-monitoring http-status-codes http-status-code-503 kubernetes-health-check
我有一个运行状况检查端点/status返回以下状态代码和响应正文:
200 OK?503 Service UnnavailableHTTP状态代码对于降级响应应该是什么?"降级"检查用于成功但速度缓慢或不稳定的检查.什么HTTP状态代码最有意义?
来自健康端点的“降级”状态响应的最合适的 HTTP 状态代码就是200 OK.
我这样说是因为我在IANA 维护的官方超文本传输协议 (HTTP) 状态代码注册表中找不到任何更好的代码,由[RFC7231] HTTP/1.1: Semantics and Content指出。应避免使用非官方代码,因为它们只会使您的 API 更难以理解。
您应该设计您的 API,使其易于使用。资源名称、HTTP 动词、状态代码等应该或多或少是不言自明的,以便已经了解“REST 语言”的人可以立即了解如何使用您的 API,而无需破译模糊的名称或不寻常的状态代码。这让我进入了答案的下一部分......
关于您的设计的其他评论
解释5xx对任何请求的响应的最自然方式是相关操作失败。
所以503 Service Unavailable对GET /status请求的响应意味着状态检查操作本身失败了。正如Nkosi 的回答中提到的API 健康检查草案中所指出的那样,只有在我们可以确定这/status是一个健康端点时,这样的响应才会有用:
运行状况端点仅在它指示其运行状况的组件的上下文中才有意义。它没有其他意义或目的。因此,它的健康状况是组件健康状况的管道。客户端应该假设健康端点返回的 HTTP 响应代码适用于整个组件(例如更大的 API 或微服务)。
但是对于 URL 路径 just /status,这是否真的是一个健康端点并不完全明显。通过查看 URL,我们只知道它返回有关某物状态的信息,但我们无法确定“某物”是什么。
由于您还告诉我们是的,它实际上是一个健康端点,我必须建议您将名称更改为health. 我还建议将它放在某个基本路径下,例如/things/health,使其更清楚它指示哪个组件的健康状况。
另一方面,如果/status它实际上是它自己的资源,即代表某个其他组件/事物状态的事物(如其名称目前所暗示的那样),那么这200 OK是成功调用的唯一合理状态,即使事物它表示状态为“不健康”。在这种情况下,a5xx将意味着无法获得任何状态,并且响应负载中的详细信息将被假定为与/status服务本身的故障有关。
所以要小心你如何命名事物以及你使用什么状态代码!
| 归档时间: |
|
| 查看次数: |
1203 次 |
| 最近记录: |