如何将 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.
但不幸的是,InfoContributor
的 contribute()
方法只有一个参数。
如何在 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");
...
}
}
我已经自定义了我的 actuator/info 端点,我想使用来自 header 的信息来授权对另一个服务的 RestTemplate
调用。
我在这里实现 InfoContributor: https://www.baeldung.com/spring-boot-info-actuator-custom
我想在 contribute()
方法中接受请求 headers。对于任何用户定义的 REST 端点,我可以定义一个 @RequestHeader
参数并访问 headers.
但不幸的是,InfoContributor
的 contribute()
方法只有一个参数。
如何在 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");
...
}
}