RestTemplate使用说明

本文详细介绍了Spring的RestTemplate工具,它是访问http接口的客户端工具,遵循Rest风格。内容涵盖RestTemplate的配置方式、对Rest风格请求的支持、返回类型说明及http请求的发送,强调了标准Rest风格在实际应用中的限制及其应对策略。
摘要由CSDN通过智能技术生成

RestTemplate是Spring提供的用于访问http接口的客户端工具,它提供了多种便捷访问http服务的方法,并且,它的设计完全遵循Rest风格。在任意SpringBoot项目中,都有默认集成,不用引入任何多余的jar包。相比较传统的HttpClient、Okhttp以及java原生的URLConnection,有着极高的封装度,能够大大的提高对第三方http接口访问的编写效率。

配置RestTemplate

RestTemplate工具提供两种装配方式。一种是RestTemplate类,一种是RestTemplateBuilder,其中,Spring已默认将RestTemplateBuilder装配为了Bean,直接使用即可。

这两种创建方式,各有优劣势。针对于RestTemplate类来讲,去创建一些错误处理拦截、添加默认请求参数比较容易,针对RestTemplateBuilder来讲,去设置连接超时和读超时比较容易。

比如单用RestTemplate去配置,如果要设置RestTemplate的连接超时,需要通过ClientHttpRequestFactory接口去创建,就比较麻烦。伪代码如下:

@Bean
public RestTemplate initrRestTemplate() {
		RestTemplate restTemplate = new RestTemplate();
		restTemplate.setRequestFactory(ClientHttpRequestFactory requestFactory);
		// TODO 通过实现ClientHttpRequestFactory接口,或者使用Spring中其它已经实现了该接口的类,等一些列操作去设置RestTemplate的连接超时
		return restTemplate;
}

 有句成语叫取长补短,所以,使用两个类糅合在一起去创建,就比较nice。如下:

@Bean
public RestTemplate initRestTemplate(RestTemplateBuilder restTemplateBuilder) {
		// 设置连接超时和读超时都是6000毫秒
		final int TIMEOUT = 6000;
		RestTemplate restTemplate = restTemplateBuilder.setConnectTimeout(Duration.ofMillis(TIMEOUT))
														.setReadTimeout(Duration.ofMillis(TIMEOUT))
														.build();
		// TODO 接着再使用RestTemplate去配置。RestTemplate提供以下配置
		// 响应异常处理。应用场景:比如访问某一个系统,它的响应状态200是正常,就可以做一个统一的非200响应码的拦截
		// restTemplate.setErrorHandler(ResponseErrorHandler errorHandler);
		// 设置全局的默认请求参数.使用场景:比如访问某一个系统,所有的url都需要携带token请求参数,那么就可以使用此设置
		// restTemplate.setDefaultUriVariables(Map<String, ?> uriVars);
		// 设置请求拦截。应用场景:比如访问某个系统,需要鉴权或者添加一些全局的请求头等信息,这里可以创建多个请求拦截,执行顺序和list中对象的顺序一致
		// restTemplate.setInterceptors(List<ClientHttpRequestInterceptor> interceptors);
		// 设置信息转换对象.使用场景:比如设置一些编码格式、数据类型、json/xml等的类型转换器等。
		// restTemplate.setMessageConverters(List<HttpMessageConverter<?>> messageConverters);
		// 创建http请求工厂.使用场景:比如前面说到的设置连接超时、访问超时等。默认使用的是org.spri
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值