1

我想知道是否有一个通用约定:在为任何给定应用程序实施 HTTP 健康检查时,您对任何响应正文不感兴趣,而只对状态代码感兴趣,默认/预期端点会是什么样子?

  • 使用 HEAD 请求 - 并返回 200 或 204 状态码(其中哪一个?)
  • 使用带有 204 的 GET
  • 别的东西?
4

2 回答 2

1

使用带有 204 的 GET 可能还支持具有相同状态代码的 HEAD

HEAD应该给出与 GET 相同的响应,但没有响应正文,因此您应该首先了解/定义 GET 响应在标头(和状态代码)方面给出的内容,然后,如果您愿意,您还可以支持 HEAD相同的端点,返回相同的状态,在本例中为 204。

请注意,如果GET employee/34回答 404 也HEAD必须回答相同的代码。这意味着必须做与 for 相同的工作GET:检查员工是否存在,设置状态等,但不能写任何响应。Tomcat 自动支持这一点,因为它用于HEAD请求一个从不写入“真实”响应的响应对象,因此可以使用相同的代码处理GET

对于检查,人们也可以考虑TRACE,但它会产生一个响应主体/输出反映您发送给它的内容,这是不同的,我还没有看到在任何地方实现。

TRACE 允许客户端查看在请求链的另一端接收到的内容,并将该数据用于测试或诊断信息。

于 2020-12-22T23:14:44.887 回答
1

根据我的经验,人们主要使用 GET 和 200。健康检查不会响应太多内容,因此没有必要发出 HEAD 请求。但这主要是使用专用健康检查 URL 的情况。

今天的云系统通常使用 Kubernetes 或 OpenShift。他们似乎使用了一个GET请求。我认为他们可能想要获得一个200ish 响应代码,所以200-299

https://docs.openshift.com/enterprise/3.0/dev_guide/application_health.html

https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/

另一个例子,Drupal 将 HTTP 响应代码定义为200

https://www.drupal.org/project/health_check_url

在 Oracle 的基础设施即服务文档中,您可以在GETHEAD请求之间进行选择,但默认值为HEAD

https://docs.oracle.com/en-us/iaas/api/#/en/healthchecks/20180501/HttpMonitor/

于 2020-12-28T08:39:29.990 回答