Java Springboot:修改传入的Web服务响应
我目前正在开发一个springboot服务,它需要能够修改从它自己发出的各种web服务调用中接收到的传入响应体 我在谷歌上搜索了很多,可以找到关于servlet过滤器、spring拦截器等的信息,但它们都位于这个服务和它的调用客户端之间 但是我正在寻找一个组件,它可以位于这个服务和它调用的其他服务之间。我能找到的最接近的一个是spring的ClientHttpRequestInterceptor,但它似乎没有修改响应体的能力Java Springboot:修改传入的Web服务响应,java,spring-boot,web-services,filter,resttemplate,Java,Spring Boot,Web Services,Filter,Resttemplate,我目前正在开发一个springboot服务,它需要能够修改从它自己发出的各种web服务调用中接收到的传入响应体 我在谷歌上搜索了很多,可以找到关于servlet过滤器、spring拦截器等的信息,但它们都位于这个服务和它的调用客户端之间 但是我正在寻找一个组件,它可以位于这个服务和它调用的其他服务之间。我能找到的最接近的一个是spring的ClientHttpRequestInterceptor,但它似乎没有修改响应体的能力 客户端应用程序--->2。我的Springboot服务。-->3.其他
另外,我知道jaxrs ClientRequestFilter会起作用,但我需要一个解决方案,用于基于spring RestTemplate的服务调用,而不是基于jaxrs的服务调用。spring AOP可以在您的场景中提供帮助。它可以在调用另一个控制器或组件之前充当组件 在SpringRESTTemplate中,我们可以添加实现ClientHttpRequestInterceptor接口的拦截器 此接口的intercept(HttpRequest,byte[],ClientHttPrequesteExecution)方法将拦截给定的请求,并通过允许我们访问该请求返回响应 ClientHttPrequesteExecution参数执行实际执行,并将请求传递给后续流程链
public class BodyInterceptor
implements ClientHttpRequestInterceptor {
@Override
public ClientHttpResponse intercept(
HttpRequest request,
byte[] body,
ClientHttpRequestExecution execution) throws IOException {
ClientHttpResponse response = execution.execute(request, body);
response.getHeaders().add("Iphone_version", "proX");
return response;
}
}