SpringBoot-28-RestTemplate基本介绍

简介: SpringBoot-28-RestTemplate基本介绍

SpringBoot-28-RestTemplate基本介绍

什么是RestTemplate


RestTemplate是从Spring 3.0开始支执行Http请求的客户端工具,常见的Http客户端库有


Jjava JDK自带的HttpURLConnection


Apache HttpComponents


OkHttp


这些客户端库对,提供常见的REST请求模板,例如Get、Post、PUT和Delete请求,相对于直接使用底层Http客户端库,RestTemplate的操作更加方便、快捷在很大程度上提高开发效率。


SpringBoot使用RestTemplate

从Spring3.0引入RestTemplate后它就作为spring-web的一部分,而spring-boot-starter-web保重包含了spring-web



1523181bb0da1843f8174d2c4eab3f4a.png


因此只需要添加spring-boot-starter-web依赖即可

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

RestTemplate初始化


SpringBoot在AutoConfig的时候,自动注入了JDK自带的HttpURLConnection作为RestTemplate底层的Http客户端实现,也可以将底层的Http实现转换为OkHttp,Apache HttpComponents,并且需要初始化Bean。

@Configuration
public class MyRestTemplate {
    /**
     * 默认使用JDK 自带的HttpURLConnection作为底层实现
     * @return
     */
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

注入RestTemplate

我们将RestTemplate注入到我们需要使用的地方进行测试,我们使用知乎专栏免费测试接口地址,测试

@RequestMapping("/test")
@RestController
public class TestController {
    @Autowired
    private RestTemplate restTemplate;
    @GetMapping("zhihu")
    public String test(){
        String forEntity = restTemplate.getForObject("https://zhuanlan.zhihu.com/api/columns/zhihuadmin", String.class);
        return forEntity;
    }
}



然后在postman中输入http://localhost:8080/test/zhihu测试




ee8b3369dcd7e1c5b9dfc48c1276ff77.png

底层Http客户端库切换

我们在网上对Http客户端的测评来看OkHttp的性能优于Apache HttpComponents和JDK自带的HttpURLConnection,那么我们如何将底层Http客户端库切换为我们需要使用的Http客户端库呢?


切换为OkHttp

  • 添加依赖
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.9.1</version>
        </dependency>


  • 初始化RestTemplate的Bean
 @Bean
    public RestTemplate restTemplateOkHttp(){
        return  new RestTemplate(new OkHttp3ClientHttpRequestFactory());
    }


切换为Apache HttpComponents

  • 添加依赖
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.13</version>
        </dependency>
  • 初始化RestTemplate的Bean
    @Bean
    public  RestTemplate restTemplateHttpClient(){
        return new RestTemplate(new HttpComponentsClientHttpRequestFactory());
    }

如果您觉得本文不错,欢迎关注,点赞,收藏支持,您的关注是我坚持的动力!

目录
相关文章
|
JSON Java 数据格式
【Java反序列化】@JsonAlias字段别名
 @JsonAlias 是 Jackson 库提供的一个注解,用于在反序列化 JSON 数据时,为字段或方法指定多个可接受的名称或别名。
1469 0
|
自然语言处理 Java Go
ULID 在 Java 中的应用: 使用 `getMonotonicUlid` 生成唯一标识符
ULID 在 Java 中的应用: 使用 `getMonotonicUlid` 生成唯一标识符
587 0
|
监控 数据可视化 中间件
平台化三部曲之三流程编排 - 平台化是舞台,流程编排就是导演一场戏
在上两篇ATA中,第一篇讨论了平台的扩展性(《从Eclipse平台看交易平台化》),强调微内核和扩展机制实现,第二篇讨论平台的模块化开发(《Google Guice平台模块化开发的果汁》),强调业务隔离,松耦合。这这第三篇ATA中,想分享下平台化中另一个重要方面,平台的服务流程编排 (*备注:本文.
18742 2
|
fastjson 前端开发
巧用fastjson自定义序列化类实现字段的转换
项目中突然需要增加另一个字段的查找,而这个查找需要查另一张表的记录。 但现在产品很多地方都要增加该字段,如何最快的实现该功能呢。 办法如下: 通过fastjson序列化时,增加该字段的序列化类,该序列化类通过CODE查找名称,并序列化到前端。
6185 0
|
负载均衡 网络协议 Unix
Nginx七层(应用层)反向代理:SCGI代理scgi_pass篇
Nginx七层(应用层)反向代理:SCGI代理scgi_pass篇
290 1
|
11月前
|
前端开发 Java 关系型数据库
基于ssm的超市会员(积分)管理系统,附源码+数据库+论文,包安装调试
本项目为简单内容浏览和信息处理系统,具备管理员和员工权限。管理员可管理会员、员工、商品及积分记录,员工则负责积分、商品信息和兑换管理。技术框架采用Java编程语言,B/S架构,前端使用Vue+JSP+JavaScript+Css+LayUI,后端为SSM框架,数据库为MySQL。运行环境为Windows,JDK8+Tomcat8.5,非前后端分离的Maven项目。提供演示视频和详细文档,购买后支持免费远程安装调试。
532 19
解决异常 java.net.URISyntaxException: Illegal character in query at index
解决异常 java.net.URISyntaxException: Illegal character in query at index
1905 0
|
敏捷开发 存储 前端开发
【美团技术】领域驱动设计DDD在B端营销系统的实践
【美团技术】领域驱动设计DDD在B端营销系统的实践
|
前端开发 JavaScript 数据可视化
React的应用场景有哪些?
React 是一个由 Facebook 开发并广泛使用的 JavaScript 库,专门用于构建用户界面。由于其灵活性和强大的生态系统,React 被广泛应用于多种场景。
646 4
|
关系型数据库 MySQL 数据库
探究数据库开源协议:PostgreSQL vs MySQL
探究数据库开源协议:PostgreSQL vs MySQL

热门文章

最新文章