gpt4 book ai didi

java - Spring RestTemplate 将属性 HttpHeader 复制到 RequestBody

转载 作者:行者123 更新时间:2023-12-02 10:39:55 27 4
gpt4 key购买 nike

我们的应用程序正在使用 RestTemplate 调用其他休息服务,它是一个 Spring Boot 应用程序。我有一些要求,需要将属性从 http header 复制到请求正文。

手动执行会导致许多地方发生变化。我正在寻找一个通用的解决方案,即我可以扩展 RestTemplate 的功能并在整个应用程序中使用它。

有没有办法修改RestTemplate以达到我的要求。我已经通过 HttpMessageConverter 尝试过各种可能性,我能够附加 Json 属性,但正在寻找一种可以从 header 复制它的方法。

如果我不清楚我的要求,请告诉我,任何指示都会有所帮助。

最佳答案

您可以通过实现 ClientHttpRequestInterceptor 来扩展 RestTemplate 行为

public class RestTemplateHeaderModifierInterceptor
implements ClientHttpRequestInterceptor {

@Override
public ClientHttpResponse intercept(
HttpRequest request,
byte[] body,
ClientHttpRequestExecution execution) throws IOException {

ClientHttpResponse response = execution.execute(request, body);
response.getHeaders().add("Foo", "bar");
return response;
}
}

@Configuration
public class RestClientConfig {

@Bean
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate();

List<ClientHttpRequestInterceptor> interceptors
= restTemplate.getInterceptors();
if (CollectionUtils.isEmpty(interceptors)) {
interceptors = new ArrayList<>();
}
interceptors.add(new RestTemplateHeaderModifierInterceptor());
restTemplate.setInterceptors(interceptors);
return restTemplate;
}
}

Reference

关于java - Spring RestTemplate 将属性 HttpHeader 复制到 RequestBody,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52989987/

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