Loading

RestTemplate、WebClient 和 RestClient

WebClient

WebClient 是 Spring Framework 5.0 中引入的响应式 HTTP 客户端,它提供了一种非阻塞、反应式的方法来处理 I/O,这可以在高流量应用程序中实现更好的可扩展性和更高的性能。

RestClient

RestClient 是 Spring Framework 6.1 中引入的同步版 HTTP 客户端 (因为随着 Project Loom 的出现,可以通过标准的同步 API 来实现异步,所以 Spring 提供了一个同步版的 HTTP 客户端)
相关 issue: Introduce RestClient

RestTemplate

RestTemplate 是一个 Spring 早期版本中基于模板方法模式设计的 HTTP 客户端,Spring 官方认为 RestTemplate 中包含了太多的重载方法,是一个不合理的设计,因此又重新设计了基于 fluent API 的 WebClient 和 RestClient。

关于 RestTemplate 的说明:https://github.com/spring-projects/spring-framework/issues/29552#issuecomment-1625324466

基于 HttpClient 的 Operations / Template 设计是我们 14 年前在 RestTemplate 中创建的,并且很快就发现 Templates 提供的 API 样式不适合 HTTP 客户端,因为在模板中公开 HTTP 的每个功能会导致太多重载。

总结

  1. 相较于 RestTemplate 的模板方法模式,WebClient 和 RestClient 使用了更现代的 Functional-style, fluent API
  2. WebClient 是一个响应式的异步 HTTP 客户端,RestClient 是一个同步版本的 HTTP 客户端

所以应在向更现代的 HTTP 客户端:RestClient 和 WebClient 迁移

More

声明式 HTTP 客户端:HttpExchange (通过 HttpServiceProxyFactory 实现)

posted @ 2024-05-31 01:20  xtyuns  阅读(155)  评论(0编辑  收藏  举报