springboot学习总结(三)RestTemplate用法

(一)配置类

package com.vincent.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestTemplateConfig {

    @Bean
    public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
        return new RestTemplate(factory);
    }

    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        factory.setReadTimeout(5000);
        factory.setConnectTimeout(15000);
        return factory;
    }
}

(二)rest接口的controller

package com.vincent.demo.controller;

import com.alibaba.fastjson.JSONObject;
import com.vincent.demo.vo.TestVO;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author rw
 * @date 2019/1/9 下午1:03
 */
@RestController
public class RestTestController {

    @GetMapping("/getTest")
    public String getTest() {
        return "getTest";
    }

    @GetMapping("/getObjectTest")
    public TestVO getObjectTest() {
        TestVO testVO = new TestVO();
        testVO.setId(1L);
        testVO.setName("test");
        return testVO;
    }

    @DeleteMapping("/deleteEntityTest")
    public JSONObject deleteEntityTest(@RequestParam Long id) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("id", id);
        return jsonObject;
    }
}

(三)测试

    @Autowired
    RestTemplate restTemplate;

    @Test
    public void getTest() throws URISyntaxException {
        String msg = restTemplate.getForObject("http://localhost:8080/getTest", String.class);
        System.out.println(msg);
        ResponseEntity<String> entity = restTemplate.getForEntity("http://localhost:8080/getTest", String.class);
        System.out.println("body:" + entity.getBody()
                + ",StatusCode:" + entity.getStatusCode()
                + ",StatusCodeValue:" + entity.getStatusCodeValue()
                + ",:Headers" + entity.getHeaders());
        //使用RequestEntity的一个弊端是new URI()要处理URISyntaxException
        RequestEntity requestEntity = RequestEntity.get(new URI("http://localhost:8080/getTest")).build();
        restTemplate.exchange(requestEntity, String.class);
        ResponseEntity<String> entity1 = restTemplate.exchange("http://localhost:8080/getTest", HttpMethod.GET, null, String.class);
        ResponseEntity<TestVO> entity2 = restTemplate.exchange("http://localhost:8080/getObjectTest", HttpMethod.GET, null, TestVO.class);
        System.out.println("body:" + entity2.getBody()
                + ",StatusCode:" + entity2.getStatusCode()
                + ",StatusCodeValue:" + entity2.getStatusCodeValue()
                + ",:Headers" + entity2.getHeaders());
    }

(四)总结

原文地址:https://www.cnblogs.com/vincentren/p/10247146.html

时间: 2024-11-25 18:24:26

springboot学习总结(三)RestTemplate用法的相关文章

Linux学习闲谈(三) ——SVN用法及切版本与合版本

Linux学习闲谈(三) --SVN用法及切版本与合版本 (转载请附上本文链接--linhxx) SVN(Subversion)在工程中运用广泛,多人合作项目.项目版本控制等方面,SVN都是不可或缺的.虽然最近很多项目也在使用Git,但SVN仍是现在流行的版本控制系统.SVN与Git相比,最大的一个优势是存在全局版本号. 一.概述 SVN分为客户端和服务端,即需要在一台大家都能访问到的服务器上安装SVN的服务端,然后各自的电脑里安装SVN的客户端.安装的过程这里不讲,有很多博客如http://w

springboot学习(三)——http序列化/反序列化之HttpMessageConverter

以下内容,如有问题,烦请指出,谢谢! 上一篇说掉了点内容,这里补上,那就是springmvc的http的序列化/反序列化,这里简单说下如何在springboot中使用这个功能. 使用过原生netty http的人可能对http序列化比较熟悉,springmvc中的意思跟netty中的意思一样.http序列化(或者叫作http报文编码),就是将Java类转化为二进制流输出给http body:http反序列化,就是将http报文转换为程序内部的Java类.有了http反序列化,就不用再去一个个re

springboot学习(三)————使用HttpMessageConverter进行http序列化和反序列化

以下内容,如有问题,烦请指出,谢谢! 对象的序列化/反序列化大家应该都比较熟悉:序列化就是将object转化为可以传输的二进制,反序列化就是将二进制转化为程序内部的对象.序列化/反序列化主要体现在程序I/O这个过程中,包括网络I/O和磁盘I/O. 那么什么是http序列化和反序列化呢? 在使用springmvc时,我们经常会这样写: @RestController @RequestMapping("/users") public class UserController { @Auto

SpringBoot学习(三)探究Springboot自动装配

目录 什么是自动装配 何时自动装配 原理分析 注:以下展示的代码springboot的版本为2.0.3版.因源码过长,大家选择展开代码 ㄟ( ▔, ▔ )ㄏ 什么是自动装配 自动装配还是利用了SpringFactoriesLoader来加载META-INF/spring.factoires文件里所有配置的EnableAutoConfgruation,它会经过exclude和filter等操作,最终确定要装配的类 流程:@Configuration 配置的Bean -> BeanFactory -

es6从零学习(三):Class的基本用法

es6从零学习(三):Class的基本用法 一:定义一个类 //定义类 class Point { constructor(x, y) { this.x = x; this.y = y; } toString() { return '(' + this.x + ', ' + this.y + ')'; } } 上面代码定义了一个"类",可以看到里面有一个constructor方法,这就是构造方法,而this关键字则代表实例对象. Point类除了构造方法,还定义了一个toString方

Spring Boot学习记录(三)--整合Mybatis

Spring Boot学习记录(三)–整合Mybatis 标签(空格分隔): spring-boot 控制器,视图解析器前面两篇都已弄好,这一篇学习持久层框架整合. 1.数据源配置 数据源使用druid,maven引入相关依赖,包括spring-jdbc依赖,mysql依赖 1.转换问题 配置的过程要学会为什么这样配置,而不是只学会了配置.这里我们可以和以前的配置方式对比: 以前版本 <!--配置数据库连接池Druid--> <bean id="dataSource"

学习AngularJs:Directive指令用法(完整版)

这篇文章主要学习AngularJs:Directive指令用法,内容很全面,感兴趣的小伙伴们可以参考一下 本教程使用AngularJs版本:1.5.3 AngularJs GitHub: https://github.com/angular/angular.js/ AngularJs下载地址:https://angularjs.org/ 摘要:Directive(指令)笔者认为是AngularJ非常强大而有有用的功能之一.它就相当于为我们写了公共的自定义DOM元素或LASS属性或ATTR属性,并

JavaWeb学习总结(三)——Tomcat服务器学习和使用(二) 包含https 非对称秘钥 NB

JavaWeb学习总结(三)--Tomcat服务器学习和使用(二) 一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下: 范例:将JavaWebDemoProject这个JavaWeb应用打包成war包 执行完之后,就可以得到一个文件,平时开发完JavaWeb应用后,一般都会将JavaWeb应用打包成一个war包,然后将这个war包放到Tomcat服务器的webapps目录下,当Tomcat服务器启动时,就会自动

cocos2dx 3.1从零学习(三)——Touch事件(回调,反向传值)

第三讲 Touch 前面两篇我们学习的内容,足够我们做一款简单的小游戏.也可以说,我们已经入门了,可以蹒跚的走路了. 本篇将讲解cocos2dx中很重要的touch回调机制.你肯定记得第一章做定时器时间的时候用过CC_CALLBACK_1宏定义,它让我们回调一个只有一个形参的函数来执行定时操作. 回调函数的实现(Lambda表达式) 学习本篇前请仔细学习一下C++11的特性,std::function和lambda表达式.C++11还引入了很多boost库的优秀代码,使我们在使用的时候不必再加b

oracle学习 第三章 常用的SQL*PLUS命令 ——02

今天接着昨天的RUN命令继续讲. 3.5 n(设置当前行)命令和A(PPEND)(附加)命令 设想,你输入了例3-10的查询语句 例 3-10 SQL> SELECT ename 2 FROM emp; 例 3-10 结果 看到以上输出时,您发现在SELECT子句中忘了job,sal.这时您又如何修改您的SELECT子句呢?首先您应该使用SQL*PLUS的L(LIST)命令来显示SQL缓冲中的内容. 例 3-11 SQL> L 例 3-11 结果 在例3-11显示的结果中,2后面的"