【问题标题】:Passing a header to custom actuator health endpoint将标头传递给自定义执行器健康端点
【发布时间】:2019-11-07 08:28:50
【问题描述】:

我为我的应用程序创建了一个自定义的 spring-boot 执行器健康端点。 Spring boot 将所有这些自定义健康端点聚合到一个大 json 中,并在我点击 application/health url 时返回它。现在,当我点击 application/health url 时,我想将一些信息传递给我以标头形式实现的自定义健康端点。我怎样才能做到这一点?

【问题讨论】:

  • 你能详细说明你为什么要这样做吗?
  • 我想向这个自定义的 healthEndpoint 发送一个字符串作为标头,并根据这个字符串决定要遵循哪个代码流。
  • 你的意思是要根据这个头在端点显示不同的健康信息吗?这是为什么?您想在某些情况下隐藏一些健康信息吗?
  • 我将举例说明。如果我通过“测试”作为标头,那么我需要创建一个服务的模拟并返回一个 http 响应。如果标头不是“测试”,那么我需要调用实际服务并获得响应。这更像是一个 if-else 场景,具体取决于我收到的标头。
  • 您是否考虑过在您的应用程序启动时使用Spring profile 来启动模拟服务或真实服务?

标签: java spring-boot-actuator health-monitoring


【解决方案1】:

如果您想传递一个标头,您可以考虑从任何 RestClient(如 PostMan 或 Insomnia)中访问 API(在本例中为 GET API)。简单地从浏览器点击 url 实际上是发出 GET 请求,但您只能在 url 中添加路径或请求参数,要添加请求正文或标头,您需要使用 REST 客户端,或者从命令中执行使用 curl 的线条。 另外,在阅读了 cmets 之后,我认为您需要的是设置 spring.profile 属性并根据该属性确定您的代码流-这是设置配置文件的方法- 1)设置Java系统属性(VM参数)

java -jar -Dspring.profiles.active=test myapp.jar

2) 设置程序参数

java -jar application.jar --spring.profiles.active=test 

【讨论】:

  • 这如何解决访问标头的问题?
  • @jcoder 答案基于问题中的评论线程,这是解决问题的方法,在 OP 的情况下,根据特定配置文件选择逻辑流程,此解决方案不不需要在选择该流的请求中设置任何配置文件特定的标头
猜你喜欢
  • 2019-03-10
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-16
  • 1970-01-01
  • 2015-07-04
相关资源
最近更新 更多