SprinbBoot学习之RestTemplate

RestTemplage:

RestTemplate:是由Spring Web项目提供,作用是使Java访问url更加方便,更加优雅。

在实际开发中,经常需要发送一个GET/POST请求到其他系统(Rest api),通过JDK自带的HttpURLConnection,ApacheHttpClient,Netty4,OKHTTP 2/3 都可以实现,Spring的RestTemplate封装了这些库的实现,使用起来更加的简洁,简而言之,RestTemplate是Spring提供的一种更加简单便捷的模板类来操作访问restful服务。

 

RestTemplate组成:

         1:HTTPMessageConverter  对象转换器

         2:ClientHttpRequestFactory默认是JDK的HttpURLConnection

         3:ResponseErrorHandler  异常处理

         4:ClientHttpRequestInterceptor  请求拦截器

SprinbBoot学习之RestTemplate_第1张图片

简介:它是spring提供的异步的客户端http访问的核心class,它提供非常简单的RESTful方式与http server端进行数据交互,根据所提动的URLs进行http访问,并处理返回结果。它是基于JDK HTTP connection建立的。因此他可以使用不同的HTTP库(apache,netty and OkHttp)来setRequestFactory。

 

 

详细介绍:

         1:RestTemplate的引入

                   RestTemplate的完整路径:org.springframework.client.RestTemplate

         可以通过上面的路径看出RestTemplate是Web下,项目中只需要加入Spring-web的依赖就可以了。

 

2:我们看一下RestTemplate的构造


SprinbBoot学习之RestTemplate_第2张图片


其中第一个进行默认的初始化,没法进行更多的限制和后续处理,比如设置超时时间等

第二个构造方法中,就可以传入ClientHttpRequestFactory参数,ClientHttpRequestFactory接口的实现类中存在timeout属性等

 

如:

 

@Bean  //将RestTemplate实例注入Spring容易

RestTemplate  restTemplate(){

SimpleClientHttpRequestFactory requestFactory = newSimpleClientHttpRequestFactory(); requestFactory.setConnectTimeout(3000);requestFactory.setReadTimeout(3000);

 RestTemplaterestTemplate = new RestTemplate(requestFactory);

 return  restTemplate;

}

 

调用时可以通过

@Autowired

private RestTemplate restTemplate;

3:RestTemplate对Http method的支持


HTTP Method

RestTemplate Method

GET

getForObject,getForEntity

POST

postForEntity,PostForLocation,postForObject

 

实例:

项目目录结构图

SprinbBoot学习之RestTemplate_第3张图片


添加依赖:


SprinbBoot学习之RestTemplate_第4张图片

程序入口:

SprinbBoot学习之RestTemplate_第5张图片

RestTemplate配置类:

SprinbBoot学习之RestTemplate_第6张图片


编写返回对象:

SprinbBoot学习之RestTemplate_第7张图片


异常类:

SprinbBoot学习之RestTemplate_第8张图片

使用RestTemplate远程调用

写两种,一种正常返回,将结果封装成User对象

二种:当远程调用返回 RestClientResponseException 异常的时候封装成ErrorBody对象(比如传入参数不合法等数据验证,不能返回逾期结果的时候会返回Error信息,这时候需要做处理)


SprinbBoot学习之RestTemplate_第9张图片

修改端口:

         为了同时启动两个服务,端口肯定是不能一样的

SprinbBoot学习之RestTemplate_第10张图片

接下来测试吧~







                 





你可能感兴趣的:(Springboot)