如何通过RestTemplate调用透明传播HTTP标头?

时间:2018-04-06 18:26:39

标签: spring spring-mvc tomcat spring-boot

我在Tomcat服务器上部署了一个Spring Boot应用程序,它使用Spring RestTemplate接收请求并向其他服务发出一些其他HTTP REST请求。

client --> myApplication --> anotherService

在传入请求中,有一个CORRELATION_ID HTTP标头,用于跟踪请求。 我希望任何对其他服务的请求也都有这个标题,这样我就可以关联不同服务器上的日志。

如何在不改变现有代码的情况下实现这一目标?

是否有任何RestTemplateInterceptor我可以在启动时设置某个位置,以便拦截任何传出请求并添加该标头? 或者有没有办法在Tomcat服务器中拦截此事件并传播标题?

1 个答案:

答案 0 :(得分:1)

没有这样的自动处理。

您可以截取传入调用的标头并将其存储在请求上下文(例如请求范围的bean)中。

然后,您可以使用ClientHttpRequestInterceptor将其添加到每个外出请求中。使用restTemplate.getInterceptors().add(…)

添加该拦截器