如何将 RequestHeader 与执行器端点一起使用? [英] How can I use RequestHeader with actuator endpoint?
问题描述
我已经自定义了我的执行器/信息端点,我想使用标头中的信息来授权对另一个服务的 RestTemplate
调用.
I have customized my actuator/info endpoint and I want to use information from the header to authorize a RestTemplate
call to another service.
我在这里实现了 InfoContributor:https://www.baeldung.com/spring-boot-info-actuator-自定义
I am implementing the InfoContributor as here: https://www.baeldung.com/spring-boot-info-actuator-custom
我想在 contribute()
方法中接受请求标头.对于任何用户定义的 REST 端点,我可以定义一个 @RequestHeader
参数和访问标头.
I want to accept request headers in the contribute()
method. For any user defined REST endpoint, I can define a @RequestHeader
parameter and access headers.
但不幸的是,InfoContributor
的 contribute()
方法只接受一个参数.
But unfortunately, the InfoContributor
's contribute()
method takes only one parameter.
如何访问 contribute()
方法中的请求标头?
How can I access a request header inside the contribute()
method?
推荐答案
- 您可以将
HttpServletRequest
自动连接到您的InfoContributor
- You can autowire
HttpServletRequest
into yourInfoContributor
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");
...
}
}
这篇关于如何将 RequestHeader 与执行器端点一起使用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!