RestTemplate入门
它提供了多种访问远程http服务的方法,是一种简单便捷的访问restful服务模板类,是spring提供的用于访问Rest服务的客户端模板工具集。
1.搭建父模块
1)创建一个maven工程名为rest-template-demo,删除src目录
2)在pom中导入依赖
<properties>
<junit.version>4.12</junit.version>
<lombok.version>1.16.18</lombok.version>
</properties> <!-- 依赖管理,父工程锁定版本-->
<dependencyManagement>
<dependencies>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
2.搭建公共服务模块
公共服务模块用于存放公用的东西,如实体类等。
1)创建maven的工程名为rest-template-demo-api,在pom中导入依赖
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
2)创建实体类User,内容如下
package com.zxh.entity; import lombok.*; @Data
public class User {
private Long id;
private String name;
private String phone;
}
3.搭建服务提供者模块
1)创建maven的工程名为rest-template-demo-provider,在pom中导入依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入自己定义的模块-->
<dependency>
<groupId>com.zxh</groupId>
<artifactId>rest-template-demo-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
2)新建启动类ProviderMain8001
package com.zxh; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
public class ProviderMain8001 {
public static void main(String[] args) {
SpringApplication.run(ProviderMain8001.class, args);
}
}
3)创建UserController类
package com.zxh.controller;
import com.zxh.entity.User;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping("/get/{id}")
public User getUser(@PathVariable("id") long id) {
User user = new User();
user.setId(id);
user.setName("张三");
return user;
}
@PostMapping("/add")
public Map<String, Object> addUser(User user) {
System.out.println(user);
Map<String, Object> map = new HashMap<>();
map.put("msg", "添加成功");
map.put("code", 200);
return map;
}
}
4)在资源目录下创建配置文件application.yml
server:
port: 8001
5)运行测试
启动主启动类,使用postman工具输入http://127.0.0.1:8001/user/get/2使用get方式测试,再输入http://127.0.0.1:8001/user/add?name=哈哈哈&phone=101使用post方式测试,均测试通过。
4.搭建服务消费者模块
1)创建maven的工程名为rest-template-demo-consumer,在pom中导入依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入自己定义的模块-->
<dependency>
<groupId>com.zxh</groupId>
<artifactId>rest-template-demo-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
2)新建启动类ConsumerMain80
package com.zxh; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
public class ConsumerMain80 {
public static void main(String[] args) {
SpringApplication.run(ConsumerMain80.class, args);
}
}
3)创建配置类
package com.zxh.config; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate; //相当于spring中的applicationContext.xml
@Configuration
public class ConfigBean { @Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
4)创建UserController,调用服务提供者
package com.zxh.controller; import com.zxh.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate; import java.util.Map; @RestController
@RequestMapping("/consumer")
public class UserController {
private final String BASE_URL = "http://127.0.0.1:8001"; @Autowired
private RestTemplate restTemplate; @GetMapping("/get/{id}")
public User getUser(@PathVariable("id") long id) {
return restTemplate.getForObject(BASE_URL + "/user/get/" + id, User.class);
} @PostMapping("/add")
public Map<String, Object> addUser(User user) {
return restTemplate.postForObject(BASE_URL + "/user/add", user, Map.class);
} }
5)在资源目录下创建配置文件application.yml
server:
port: 80
6)修改rest-temp-demo-provider的UserController类中addUser方法,给User参数添加@RequestBody注解

7)运行测试
启动主启动类,使用postman工具输入http://127.0.0.1/consumer/get/1使用get方式测试,再输入http://127.0.0.1/consumer/add?name=嘻嘻嘻&phone=101使用post方式测试,均测试通过。
自此,可以看出,使用RestTemplate可以进行服务之间的调用。但是必须指定服务的域名和端口号。
RestTemplate入门的更多相关文章
- SpringBoot系列: RestTemplate 快速入门
====================================相关的文章====================================SpringBoot系列: 与Spring R ...
- Spring RestTemplate 的介绍和使用-入门
RestTemplate是什么? 传统情况下在java代码里访问restful服务,一般使用Apache的HttpClient.不过此种方法使用起来太过繁琐.spring提供了一种简单便捷的模板类来进 ...
- Spring MVC入门(一)—— RestTemplate组件
ClientHttpRequestFactory 它是个函数式接口,用于根据URI和HttpMethod创建出一个ClientHttpRequest来发送请求~ ClientHttpRequest它代 ...
- 【Day01】Spring Cloud入门-架构演进、注册中心Nacos、负载均衡Ribbon、服务调用RestTemplate与OpenFeign
〇.课程内容 课程规划 Day1 介绍及应用场景 Day2 组件介绍及 广度 Day3 设计思想.原理和源码 Day4 与容器化的容器(服务迁移.容器编排) 一.业务架构的演进 1.单体架构时代 缺陷 ...
- Spring-cloud(六) Hystrix入门
前提 一个可用的Eureka注册中心(文中以之前博客中双节点注册中心,不重要) 一个连接到这个注册中心的服务提供者 快速入门 项目搭建 搭建一个新maven项目,artifactid为Ribbon-c ...
- spring cloud 入门系列四:使用Hystrix 实现断路器进行服务容错保护
在微服务中,我们将系统拆分为很多个服务单元,各单元之间通过服务注册和订阅消费的方式进行相互依赖.但是如果有一些服务出现问题了会怎么样? 比如说有三个服务(ABC),A调用B,B调用C.由于网络延迟或C ...
- Spring Boot微服务架构入门
概述 还记得在10年毕业实习的时候,当时后台三大框架为主流的后台开发框架成软件行业的标杆,当时对于软件的认识也就是照猫画虎,对于为什么会有这么样的写法,以及这种框架的优势或劣势,是不清楚的,Sprin ...
- Spring Cloud 快速入门
Spring Cloud快速入门 代码地址: https://gitee.com/gloryxu/spring-cloud-test EureKa:服务注册中心 添加依赖 <dependenc ...
- Spring Cloud 入门教程(七): 熔断机制 -- 断路器
对断路器模式不太清楚的话,可以参看另一篇博文:断路器(Curcuit Breaker)模式,下面直接介绍Spring Cloud的断路器如何使用. SpringCloud Netflix实现了断路器库 ...
- spring boot + vue + element-ui全栈开发入门——spring boot后端开发
前言 本文讲解作为后端的spring boot项目开发流程,如果您还不会配置spring boot环境,就请点击<玩转spring boot——快速开始>,如果您对spring boot还 ...
随机推荐
- java 中的判断两个对象是否相等的比较严格的操作
简介 RT code public class Employee{ public boolean equals(Object otherObject) { // a quick test to see ...
- Day6 备战CCF-CSP练习
Day 6 题目描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行. 你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符:当选项关闭时,表示同一个字 ...
- babylon.js 学习笔记(2)
如何在网页中嵌入设计好的模型? 接上回继续,我们设计好精美的模型后,最终总要展示给客户,比如利用playground画了1个方块: const createScene = () => { con ...
- 基础篇:6.2)GD&T较线性尺寸公差的优缺点
本章目的:理解GD&T标注对比线性/传统/坐标尺寸公差的优势,但也不要忘记其使用限制. 1.线性尺寸公差 1.1 定义 线性尺寸公差=传统尺寸公差=坐标尺寸公差. 传统尺寸公差(Tradi ...
- win11正式版出现驱动程序不兼容的问题
有不少雨林木风系统的小伙伴,在电脑上安装win11正式版以后,电脑都会自动安装驱动程序,而因为是自动安装的,常常会出现驱动程序不兼容问题,导致一些硬件出现不能正常使用的问题,那样这种情况我们要如何解决 ...
- 一文带你玩转全志T527的GPU(2)-盈鹏飞嵌入式
本文中涉及到产品的实际操作,该操作都是再盈鹏飞嵌入式AHD-X527主板上进行执行,AHD-X527介绍如下: AHD-X527产品特性: 采用Allwinner公司Cortex-A55八核A527/ ...
- AirSim+PX4+QGC实现无人机自动避障
博客地址:https://www.cnblogs.com/zylyehuo/ 参考链接: AirSim+PX4 无人机自动避障详细教程 AirSim 配置文件修改 代码修改完成后,进入 AirSim ...
- 当物理定律与高精度计算相遇:我的新开源项目 N-Body
大家好,今天想和大家聊聊我计划投入的下一个开源项目:n-body--一个天体运动模拟程序. 缘起:物理世界的纯粹之美 多年前,我就曾被物理世界的简洁与优雅所深深吸引,尝试用 C++.JavaScrip ...
- this[kHandle] = new _Hash(algorithm, xofLe
QUICK FIX You can try downgrade the version. But as a quick fix you can do the below options. On Uni ...
- [题解]P10185 [YDOI R1] Necklace
P10185 [YDOI R1] Necklace 容易写出答案为: \[\large\sum\limits_{i=1}^n\Big(2^{S-a_i}\sum\limits_{j=1}^{a_i}( ...