Spring RestTemplate 之get请求
一,简介:Spring RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率
二、RestTemplate中几种常见请求方法的使用
●get请求:在RestTemplate中,发送一个GET请求,我们可以通过如下两种方式
第一种:getForEntity
getForEntity方法的返回值是一个ResponseEntity<T>,ResponseEntity<T>是Spring对HTTP请求响应的封装,包括了几个重要的元素,如响应码、contentType、contentLength、响应消息体等。例子:
@Controller
@RequestMapping("/restTest")
public class RestTempLateTest {
private RestTemplate restTemplate = new RestTemplate();
@RequestMapping("/hello")
@ResponseBody
public String getHello() {
// ResponseEntity<IntMonitor> res = restTemplate.getForEntity(url,
// IntMonitor)
ResponseEntity<String> res = restTemplate.getForEntity(
"http://10.145.198.143:8081/ords/data_service/monitor/IntMonitor",
String.class);
String body = res.getBody();
return body;
}
}
有时候我在调用服务提供者提供的接口时,可能需要传递参数,有两种不同的方式,如下
@RequestMapping("/hello1/{flag}")
@ResponseBody
public String getHello1(@PathVariable String flag){
ResponseEntity<String> res = restTemplate.getForEntity(
"http://10.145.198.143:8081/ords/data_service/monitor/IntMonitor/{1}",
String.class,
"1");
String body = res.getBody();
return body;
}
@RequestMapping("/hello2/{flag}")
@ResponseBody
public String getHello2(@PathVariable String flag){
Map<String, Object> map = new HashMap<String, Object>();
map.put("flag", flag);
ResponseEntity<String> res = restTemplate.getForEntity(
"http://10.145.198.143:8081/ords/data_service/monitor/IntMonitor/{flag}",
String.class,
map);
String body = res.getBody();
return body;
}
@RequestMapping("/hello3/{flag}")
@ResponseBody
public String getHello3(@PathVariable String flag) {
UriComponents uriComponents = UriComponentsBuilder
.fromUriString(
"http://10.145.198.143:8081/ords/data_service/monitor/IntMonitor/{flag}")
.build().expand(flag);
URI uri = uriComponents.toUri();
ResponseEntity<String> res = restTemplate.getForEntity(uri, String.class);
String body = res.getBody();
return body;
}
可以用一个数字做占位符,最后是一个可变长度的参数,来一一替换前面的占位符
也可以前面使用name={name}这种形式,最后一个参数是一个map,map的key即为前边占位符的名字,map的value为参数值
调用地址也可以是一个url,而不是一个字符串,这样可以直接调用url.
第二种:getForObject
getForObject函数实际上是对getForEntity函数的进一步封装,如果你只关注返回的消息体的内容,对其他信息都不关注,此时可以使用getForObject,
举一个简单的例子,如下:
@RequestMapping("/hello4/{flag}")
@ResponseBody
public String getHello4(@PathVariable String flag) {
UriComponents uriComponents = UriComponentsBuilder
.fromUriString(
"http://10.145.198.143:8081/ords/data_service/monitor/IntMonitor/{flag}")
.build().expand(flag);
URI uri = uriComponents.toUri();
String res = restTemplate.getForObject(uri, String.class);
return res;
}
Spring RestTemplate 之get请求的更多相关文章
- 通过 Spring RestTemplate 调用带请求体的 Delete 方法(Delete With Request Body)
Spring 框架的RestTemplate 类定义了一些我们在通过 java 代码调用 Rest 服务时经常需要用到的方法,使得我们通过 java 调用 rest 服务时更加方便.简单.但是 Res ...
- Spring RestTemplate get post 请求 携带 headers
RestTemplate 1.我用RestTemplate请求时 我把他注入到容器里 这样可以 什么用什么时候拿 2.也可以new出来 不过我不喜欢 所以就没有用new的 下面我自己的方法 先注 ...
- spring restTemplate 进行http请求的工具类封装
本文为博主原创,未经允许不得转载: 1.对常用调用的方法进行封装: import org.springframework.http.HttpHeaders; import com.alibaba.fa ...
- Spring RestTemplate 之post请求
●post请求:在RestTemplate中,POST请求可以通过如下三个方法来发起,但post提交方式又有两种 formData 和 payLoad,而且接口设计与传统的浏览器使用的提交方式又有差异 ...
- Spring RestTemplate 小结
关于RestTemplate 首先,你可以把它理解为一个发起请求并接收响应的工具类(功能类似浏览器). 其次,它其实是一个壳,具体还是通过调用别的接口来实现(如jdk自带的连接,或者HttpClien ...
- Spring RestTemplate中几种常见的请求方式GET请求 POST请求 PUT请求 DELETE请求
Spring RestTemplate中几种常见的请求方式 原文地址: https://blog.csdn.net/u012702547/article/details/77917939 版权声明 ...
- Spring RestTemplate: 比httpClient更优雅的Restful URL访问, java HttpPost with header
{ "Author": "tomcat and jerry", "url":"http://www.cnblogs.com/tom ...
- Spring RestTemplate介绍
http://www.cnblogs.com/rollenholt/p/3894117.html RestTemplate 这篇文章打算介绍一下Spring的RestTemplate.我这边以前设计到 ...
- Spring RestTemplate详解
Spring RestTemplate详解 1.什么是REST? REST(RepresentationalState Transfer)是Roy Fielding 提出的一个描述互联系统架构风格 ...
随机推荐
- 汽车HUD(Head-up Display)的技术难点
汽车HUD(Head-up Display)的技术难点 首先解析一下HUD是什么原理吧.其实就是把车的前挡风玻璃当成反射镜,在驾驶员人眼前投射一个仪表盘的虚像.图像本身来自下方的电子发光屏,发出仪表盘 ...
- 1、java数据结构和算法---循环队列
直接上代码: public class CircleArrayQueueLvcai { private int[] array; private int maxSize;//循环队列大小 privat ...
- Spring Cloud系列(三):服务消费与负载均衡
上一篇介绍了服务提供者,有了注册中心和服务提供者,我们就可以进行服务消费了.Spring Cloud可以通过RestTemplate+Ribbon和Feign这两种方式消费服务. 我们仍然在上一篇的项 ...
- P2782 友好城市(最长不下降子序列)
题目描述 有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的$N$个城市.北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同.每对友好城市都向政府申请在河上开辟一条直 ...
- 『无为则无心』Python基础 — 5、Python开发工具的安装与使用
目录 1.Pycharm下载 2.Pycharm安装 3.PyCharm界面介绍 4.基本使用 (1)新建Python项目 (2)编写Python代码 (3)执行代码查看结果 (4)设置PyCharm ...
- Python 机器学习实战 —— 监督学习(下)
前言 近年来AI人工智能成为社会发展趋势,在IT行业引起一波热潮,有关机器学习.深度学习.神经网络等文章多不胜数.从智能家居.自动驾驶.无人机.智能机器人到人造卫星.安防军备,无论是国家级军事设备还是 ...
- 微信小程序电子签名实现
实现签名方法就是使用canvas <canvas canvas-id="firstCanvas" id='firstCanvas' bindtouchstart=" ...
- STP协议与MSTP协议
STP协议与MSTP协议 目录 一.STP概述 1.1.交换网络环路的产生 1.2.STP简介 二.生成树算法 2.1.生成树算法的步骤 2.2.网桥 ID 2.3.选择根端口 2.4.选择指定端口 ...
- SpringBoot数据访问(三) SpringBoot整合Redis
前言 除了对关系型数据库的整合支持外,SpringBoot对非关系型数据库也提供了非常好的支持,比如,对Redis的支持. Redis(Remote Dictionary Server,即远程字典服务 ...
- 番外篇:使用nssm工具将ES、Kibana、Logstash或者其他.bat文件部署为Windows后台服务的方法
使用NSSM工具安装bat文件为Windows服务 nssm是一个可以把bat批处理文件部署为Windows服务的小工具.例如很多.net项目可能还是在Windows服务器上面跑的,但是很多组件只提供 ...