如何将 RequestHeader 与执行器端点一起使用?

How can I use RequestHeader with actuator endpoint?

我已经自定义了我的 actuator/info 端点,我想使用来自 header 的信息来授权对另一个服务的 RestTemplate 调用。

我在这里实现 InfoContributor: https://www.baeldung.com/spring-boot-info-actuator-custom

我想在 contribute() 方法中接受请求 headers。对于任何用户定义的 REST 端点,我可以定义一个 @RequestHeader 参数并访问 headers.

但不幸的是,InfoContributorcontribute() 方法只有一个参数。

如何在 contribute() 方法中访问请求 header?

  • 您可以将 HttpServletRequest 自动连接到您的 InfoContributor
    import javax.servlet.http.HttpServletRequest;

    @Component
    public class Custom implements InfoContributor {

       @Autowired
       private HttpServletRequest request;

       @Override
       public void contribute(Info.Builder builder) {
          ...
          request.getHeader("your header");
          ...
       }
    }
  • 或者您可以使用 RequestContextHolder 获取它
@Component
public class Custom implements InfoContributor {

    @Override
    public void contribute(Info.Builder builder) {
        ...
        HttpServletRequest request = 
           ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes())
                        .getRequest();
        request.getHeader("your header");
       ...
    }
}