RestTemplate在Spring或非Spring环境下使用精讲

作者:字母哥哥 时间:2022-03-03 07:35:41 

一、什么是 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 编程的需求并没有那么高。

RestTemplate在Spring或非Spring环境下使用精讲

二、非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在Spring或非Spring环境下使用精讲

这里我们只是演示了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;

来源:https://zimug.blog.csdn.net/article/details/107705070

标签:RestTemplate,Spring,环境
0
投稿

猜你喜欢

  • C++类中的六大默认成员函数详解

    2022-09-18 01:33:01
  • C# ListBox中的Item拖拽代码分享

    2022-04-12 14:06:41
  • Android触摸及手势操作GestureDetector

    2023-07-31 14:13:42
  • WPF实现3D翻牌式倒计时特效

    2021-11-11 16:08:21
  • C#中ValueTuple的原理详解

    2023-10-26 06:40:34
  • java过滤器中Filter的ChainFilter过滤链

    2021-09-29 00:03:42
  • Android4.4新增函数访问外部存储

    2022-09-14 18:34:04
  • Java设计模式之Builder建造者模式

    2021-12-16 07:21:53
  • 详解Java中的final关键字

    2023-02-20 17:29:50
  • Java实现复制文件并命名的超简洁写法

    2022-02-12 12:54:06
  • android view转Bitmap生成截图的方法

    2022-11-07 13:41:53
  • java 读取excel文件转换成json格式的实例代码

    2023-09-11 13:07:28
  • 全面了解Java中的内部类和匿名类

    2023-01-05 09:14:23
  • RecyclerView实现纵向和横向滚动

    2023-04-03 14:50:44
  • IDEA中JetBrains Mono字体的正确安装姿势

    2022-03-12 12:21:40
  • Java反射机制的简单讲解

    2023-12-12 20:49:13
  • Android编程实现调用相册、相机及拍照后直接裁剪的方法

    2023-12-19 10:27:08
  • Android MVP模式实战教程

    2023-09-05 13:16:54
  • springboot整合Quartz实现动态配置定时任务的方法

    2023-03-08 22:13:10
  • C#通过反射创建自定义泛型

    2022-12-30 07:12:38
  • asp之家 软件编程 m.aspxhome.com