gpt4 book ai didi

scala - 如何为响应式 Spring WebClient (Spring-WebFlux) 定义自定义 HttpMessageConverter

转载 作者:行者123 更新时间:2023-12-03 23:08:47 26 4
gpt4 key购买 nike

为 Spring org.springframework.web.client.RestTemplate ,定义一个自己的 HttpMessageConverter 相对容易:

/**
* Set the message body converters to use.
* <p>These converters are used to convert from and to HTTP requests and responses.
*/
public void setMessageConverters(List<HttpMessageConverter<?>> messageConverters) {
validateConverters(messageConverters);
// Take getMessageConverters() List as-is when passed in here
if (this.messageConverters != messageConverters) {
this.messageConverters.clear();
this.messageConverters.addAll(messageConverters);
}
}

将我的客户端转换为响应式 WebClient 时,我没有找到像以前一样使用 RestTemplate 定义自己的消息转换器的合适方法。

背景:我们的 spring boot 项目基于 Scala,我们使用我们自己的转换器(基于 com.fasterxml.jackson.module.scala.JacksonModule)来处理 Scala Case 类。

最佳答案

您可以通过 Encoder 注册自定义编解码器( DecoderHttpMessageReaderHttpMessageWriterWebClient.builder() )为您 WebClient在 react 世界中。

  WebClient client = WebClient.builder()
//see: https://github.com/jetty-project/jetty-reactive-httpclient
//.clientConnector(new JettyClientHttpConnector())
.clientConnector(new ReactorClientHttpConnector())
.codecs(
clientCodecConfigurer ->{
// .defaultCodecs() set defaultCodecs for you
// clientCodecConfigurer.defaultCodecs();

// You can customize an encoder based on the defualt config.
// clientCodecConfigurer.defaultCodecs().jackson2Encoder(...)

// Or
// use customCodecs to register Codecs from scratch.
clientCodecConfigurer.customCodecs().register(new Jackson2JsonDecoder());
clientCodecConfigurer.customCodecs().register(new Jackson2JsonEncoder());
}

)
.baseUrl("http://localhost:8080")
.build();

关于scala - 如何为响应式 Spring WebClient (Spring-WebFlux) 定义自定义 HttpMessageConverter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60394358/

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