JavaSpring之RestTemplate的使用
Posted H__D
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaSpring之RestTemplate的使用相关的知识,希望对你有一定的参考价值。
RestTemplate介绍
调用远程服务时就必须使用HTTP客户端,主要有四种:JDK原生的URLConnection、Apache的Http Client、Netty的异步HTTP Client, Spring的RestTemplate。
解放了原先HttpClient的复杂提交,java中调用RESTful服务很典型的是使用HttpClient,对于常用的REST操作,这些方法属于低等级的操作。使用HttpClient我们需要自己封装Post请求,再根据响应的状态码判断从响应中获取header和body,有时候还需要自己做json转换。
Spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只需要传入url及返回值类型即可。相较于之前常用的HttpClient,RestTemplate是一种更优雅的调用RESTful服务的方式。
在Spring应用程序中访问第三方REST服务与使用Spring RestTemplate类有关。RestTemplate类的设计原则与许多其他Spring *模板类(例如JdbcTemplate、JmsTemplate)相同,为执行复杂任务提供了一种具有默认行为的简化方法。
RestTemplate默认依赖JDK提供http连接的能力(HttpURLConnection),如果有需要的话也可以通过setRequestFactory方法替换为例如 Apache HttpComponents、Netty或OkHttp等其它HTTP library。
考虑到RestTemplate类是为调用REST服务而设计的,因此它的主要方法与REST的基础紧密相连就不足为奇了,后者是HTTP协议的方法:HEAD、GET、POST、PUT、DELETE和OPTIONS。例如,RestTemplate类具有headForHeaders()、getForObject()、postForObject()、put()和delete()等方法。
RestTemplate实现
RestTemplate包含以下几个部分:
- HttpMessageConverter 对象转换器
- ClientHttpRequestFactory 默认是JDK的HttpURLConnection
- ResponseErrorHandler 异常处理
- ClientHttpRequestInterceptor 请求拦截器
RestTemplate是spring的一个rest客户端,在spring-web这个包下,spring boot的依赖如下:
1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-web</artifactId> 4 </dependency>
点进去可以看到spring-web
1 <dependency> 2 <groupId>org.springframework</groupId> 3 <artifactId>spring-web</artifactId> 4 <version>5.1.9.RELEASE</version> 5 </dependency>
所以如果在非spring的框架下直接引入spring-web这个包即可。
RestTemplate有三个实现
1 package org.springframework.web.client; 2 3 public class RestTemplate extends InterceptingHttpAccessor implements RestOperations { 4 5 ... 6 7 public RestTemplate() { 8 ... 9 } 10 11 public RestTemplate(ClientHttpRequestFactory requestFactory) { 12 ... 13 } 14 15 public RestTemplate(List<HttpMessageConverter<?>> messageConverters) { 16 ... 17 } 18 }
RestTemplate使用
1、新建一个Maven工程,引入依赖spring-web
1 <dependency> 2 <groupId>org.springframework</groupId> 3 <artifactId>spring-web</artifactId> 4 <version>5.1.9.RELEASE</version> 5 </dependency>
2、
以上是关于JavaSpring之RestTemplate的使用的主要内容,如果未能解决你的问题,请参考以下文章