gpt4 book ai didi

java - Spring 启动 : Modify incoming Web service response

转载 作者:行者123 更新时间:2023-11-30 07:40:00 24 4
gpt4 key购买 nike

我目前正在开发一个 springboot 服务,它需要能够修改从其自身进行的各种 Web 服务调用接收到的传入响应主体。

我在谷歌上搜索了很多,可以找到有关 servlet 过滤器、spring 拦截器等的信息。但所有这些都位于该服务与其调用客户端之间。

但我正在寻找一个可以位于该服务和它调用的其他服务之间的组件。我能找到的最接近的是 spring 的 ClientHttpRequestInterceptor,但它似乎没有修改响应主体的能力。

  1. 客户端应用程序 ---> 2. 我的 Springboot 服务。 ---> 3. 其他网络服务

我需要在 2 和 3 之间有一个组件。

有人可以解释一下吗?谢谢。

P.S:我也知道 jaxrs ClientRequestFilter 可以解决问题,但我需要一个基于 spring RestTemplate 的服务调用的解决方案,而不是基于 jaxrs 的解决方案。

最佳答案

在 Spring 中,RestTemplate 允许我们添加实现 ClientHttpRequestInterceptor 接口(interface)的拦截器。

这个接口(interface)的 intercept(HttpRequest, byte[], ClientHttpRequestExecution) 方法将拦截给定的请求,并通过让我们访问请求来返回响应,

ClientHttpRequestExecution 参数进行实际执行,并将请求传递给后续流程链

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;
}
}

关于java - Spring 启动 : Modify incoming Web service response,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58515000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com