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

简介:它是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


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

第二个构造方法中,就可以传入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


添加依赖:


SprinbBoot学习之RestTemplate

程序入口:

SprinbBoot学习之RestTemplate

RestTemplate配置类:

SprinbBoot学习之RestTemplate


编写返回对象:

SprinbBoot学习之RestTemplate


异常类:

SprinbBoot学习之RestTemplate

使用RestTemplate远程调用

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

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


SprinbBoot学习之RestTemplate

修改端口:

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

SprinbBoot学习之RestTemplate

接下来测试吧~







                 





相关文章:

  • 2022-12-23
  • 2021-04-27
  • 2021-05-25
  • 2021-10-19
  • 2021-08-29
  • 2022-12-23
  • 2021-09-24
猜你喜欢
  • 2022-02-10
  • 2021-07-11
  • 2021-08-10
  • 2021-07-16
  • 2021-12-16
  • 2022-12-23
  • 2021-08-26
相关资源
相似解决方案