Spring框架spring-web模块中的RestTemplate类详解

转载:

 本文来自博客园,作者:茄子_2008,转载请注明原文链接:Spring框架spring-web模块中的RestTemplate类详解 - 茄子_2008 - 博客园

 Spring框架spring-web模块中的RestTemplate类详解

RestTemplate类是spring-web模块中进行HTTP访问的REST客户端核心类。RestTemplate请求使用阻塞式IO,适合低并发的应用场景。

1. RestTemplate类提供了3个构造函数

RestTemplate()
RestTemplate(ClientHttpRequestFactory requestFactory)
org.springframework.http.client.ClientHttpRequestFactory接口的实现类给出底层实现的第三方HTTP客户端软件。

RestTemplate(java.util.List<HttpMessageConverter<?>> messageConverters)
org.springframework.http.converter.HttpMessageConverter接口的实现对象能够在HTTP消息与Java POJO之间进行数据转换。
 

2. RestTemplate类能够以多种HTTP的方法,如GET, POST, PUT, DELETE, HEAD, OPTIONS等,向服务器发起HTTP请求。

2.1 GET请求的方法

getForObject(String, ResponseClass, Object[])
getForObject(String, ResponseClass, Map)
getForObject(URI, ResponseClass);
2.2 PUT请求的方法:

put(String, RequestClass, Object[])
put(String, RequestClass, Map)
put(URI, RequestClass);
2.3 POST请求的方法:

postForObject(String, RequestClass, ResonponseClass, Object[])
postForObject(String, RequestClass, ResonponseClass, Map)
postForObject(URI, RequestClass, ResonponseClass);
3. 在最新的Spring Framework 5.0.7.RELEASE中,spring-web模块底层采用的第三方HTTP客户端软件实现
3.1 Java HttpURLConnection (默认RestTemplate采用,不支持HTTP2)

SimpleClientHttpRequestFactory

3.2 Netty 4.1.25.Final

Netty4ClientHttpRequestFactory已经过时,被ReactorClientHttpConnector替代

3.3 OkHttp 3.10.0

OkHttp3ClientHttpRequestFactory

3.4 Apache HttpComponents (不支持HTTP2)

HttpClient 4.5.5
HttpComponentsClientHttpRequestFactory

HttpAsyncClient 4.1.3
HttpComponentsAsyncClientHttpRequestFactory已经过时

4. 示例

4.1 使用默认客户端构造RestTemplate对象

RestTemplate restTemplate = new RestTemplate();
等价于

RestTemplate restTemplate = new RestTemplate(new SimpleClientHttpRequestFactory());
等价于

RestTemplate restTemplate = new RestTemplate();
restTemplate.setRequestFactory(new SimpleClientHttpRequestFactory());
4.2 使用OkHttp3构造RestTemplate对象

RestTemplate restTemplate = new RestTemplate(new OkHttp3ClientHttpRequestFactory());
4.3 使用RestTemplateBuilder构建参数化的RestTemplate对象

RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder();
restTemplateBuilder.build();
4.4 使用OkHttp3Client发出HTTPS请求

SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
SSLSocketFactory ssf = sslContext.getSocketFactory();

OkHttpClient httpClient = new OkHttpClient.Builder()
.sslSocketFactory(ssf, (X509TrustManager) trustAllCerts[0])
.hostnameVerifier(verifieredAllHost)
.build();

OkHttp3ClientHttpRequestFactory requestFactory = 
new OkHttp3ClientHttpRequestFactory(httpClient);
RestTemplate template = new RestTemplate(requestFactory);
5. 替代RestTemplate的响应式客户端WebClient

在spring-webflux模块中,提供了响应式REST请求客户端WebClient,用以替代RestTemplate。

org.springframework.web.reactive.function.client.WebClient接口使用非阻塞式IO,支持异步调用,适合高并发、流式处理场景。

在该spring-webflux模块中,提供了一个WebClient默认实现org.springframework.web.reactive.function.client.DefaultWebClient类,后续我们再详细介绍。
        

参考链接:

https://github.com/spring-projects/spring-framework/blob/v5.0.7.RELEASE/spring-web/src/main/java/org/springframework/web/client/RestTemplate.java

https://docs.spring.io/spring/docs/5.0.x/javadoc-api/org/springframework/web/client/RestTemplate.html
--------------------- 
版权声明:本文为CSDN博主「易生一世」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/taiyangdao/article/details/81255472

本文来自博客园,作者:茄子_2008,转载请注明原文链接:Spring框架spring-web模块中的RestTemplate类详解 - 茄子_2008 - 博客园

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值