一、什么是 RestTemplate?
RestTemplate
是执行 HTTP 申请的同步阻塞式的客户端,它在 HTTP 客户端库(例如 JDK HttpURLConnection,Apache HttpComponents,okHttp 等)根底封装了更加简略易用的模板办法 API。也就是说 RestTemplate 是一个封装,底层的实现还是 java 利用开发中罕用的一些 HTTP 客户端。然而绝对于间接应用底层的 HTTP 客户端库,它的操作更加不便、快捷,能很大水平上晋升咱们的开发效率。
RestTemplate
作为 spring-web 我的项目的一部分,在 Spring 3.0 版本开始被引入。RestTemplate 类通过为 HTTP 办法(例如 GET,POST,PUT,DELETE 等)提供重载的办法,提供了一种十分不便的办法拜访基于 HTTP 的 Web 服务。如果你的 Web 服务 API 基于规范的 RESTful 格调设计,应用成果将更加的完满。
依据 Spring 官网文档及源码中的介绍,RestTemplate 在未来的版本中它可能会被弃用,因为他们已在 Spring 5 中引入了 WebClient 作为非阻塞式 Reactive HTTP 客户端。然而 RestTemplate 目前在 Spring 社区内还是很多我的项目的“重度依赖”,比如说 Spring Cloud。另外,RestTemplate 说白了是一个客户端 API 封装,和服务端相比,非阻塞 Reactive 编程的需要并没有那么高。
二、非 Spring 环境下应用 RestTemplate
为了不便后续开发测试,首先介绍一个网站给大家。JSONPlaceholder 是一个提供收费的在线 REST API 的网站,咱们在开发时能够应用它提供的 url 地址测试下网络申请以及申请参数。或者当咱们程序须要获取一些模仿数据、模仿图片时也能够应用它。
RestTemplate 是 spring 的一个 rest 客户端,在 spring-web 这个包下。这个包尽管叫做 spring-web,然而它的 RestTemplate 能够脱离 Spring 环境应用。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
测试一下 Hello world,应用 RestTemplate 发送一个 GET 申请,并把申请失去的 JSON 数据后果打印进去。
@Test
public void simpleTest()
{RestTemplate restTemplate = new RestTemplate();
String url = "http://jsonplaceholder.typicode.com/posts/1";
String str = restTemplate.getForObject(url, String.class);
System.out.println(str);
}
服务端是 JSONPlaceholder 网站,帮咱们提供的服务端 API。须要留神的是:”http://jsonplaceholder.typicode.com/posts/1″ 服务 URL,尽管 URL 外面有 posts 这个单词,然而它的英文含意是:帖子或者布告,而不是咱们的 HTTP Post 协定。所以说 ”http://jsonplaceholder.typicode.com/posts/1″,申请的数据是:id 为 1 的 Post 布告资源。打印后果如下:
这里咱们只是演示了 RestTemplate 最根底的用法,RestTemplate 会写成一个系列的文章,请大家关注。
三、Spring 环境下应用 RestTemplate
将 maven 坐标从 spring-web 换成 spring-boot-starter-web
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
将 RestTemplate 配置初始化为一个 Bean。这种初始化办法,是应用了 JDK 自带的 HttpURLConnection 作为底层 HTTP 客户端实现。咱们还能够把底层实现切换为 Apache HttpComponents,okHttp 等,咱们后续章节会为大家介绍。
@Configuration
public class ContextConfig {
// 默认应用 JDK 自带的 HttpURLConnection 作为底层实现
@Bean
public RestTemplate restTemplate(){RestTemplate restTemplate = new RestTemplate();
return restTemplate;
}
}
在须要应用 RestTemplate 的地位,注入并应用即可。
@Resource //@AutoWired
private RestTemplate restTemplate;
欢送关注我的博客,外面有很多精品合集
- 本文转载注明出处(必须带连贯,不能只转文字):字母哥博客。
感觉对您有帮忙的话,帮我点赞、分享!您的反对是我不竭的创作能源!。另外,笔者最近一段时间输入了如下的精品内容,期待您的关注。
- 《手摸手教你学 Spring Boot2.0》
- 《Spring Security-JWT-OAuth2 一本通》
- 《实战前后端拆散 RBAC 权限管理系统》
- 《实战 SpringCloud 微服务从青铜到王者》
- 《VUE 深入浅出系列》