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 请求拦截器
简介:它是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的构造
其中第一个进行默认的初始化,没法进行更多的限制和后续处理,比如设置超时时间等
第二个构造方法中,就可以传入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 |
实例:
项目目录结构图
添加依赖:
程序入口:
RestTemplate配置类:
编写返回对象:
异常类:
使用RestTemplate远程调用
写两种,一种正常返回,将结果封装成User对象
二种:当远程调用返回 RestClientResponseException 异常的时候封装成ErrorBody对象(比如传入参数不合法等数据验证,不能返回逾期结果的时候会返回Error信息,这时候需要做处理)
修改端口:
为了同时启动两个服务,端口肯定是不能一样的
接下来测试吧~