RestTemplate详解
-Get请求
在RestTemplate中通过如下两个方法进行调用
--第一种:getForEntity()函数
返回:ResponseEntity(对HTTP响应的封装,重要元素:HTTP请求状态的枚举对象HttpStatus,
HTTP请求头信息对象HttpHeaders,泛型的请求体对象)
例如:
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> responseEntity = restTemplate.getForEntity("http://USER-SERVICE
/user?name={1}", String.class, "didi");
String body = responseEntity.getBody();
解析:该请求是访问USER-SERVICE服务的/user请求,同时最后一个请求参数"didi"会替换url中的{1}的占位符,而返回的
ResponseEntity对象中的body内容会根据第二个参数转换成String类型
例如:
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<User> responseEntity = restTemplate.getForEntity("http://SERVICE-
USER/user?name={1}", User.class, "didi");
User body = responseEntity.getBidy();
解析:该请求访问USER-SERVICE服务的/user请求,同时最后一个请求参数"didi"会替换url中的{1}的占位符,而返回的
ResponseEntity对象中的body内容会根据第二个参数转换成User类型
三个重载方法:
getForEntity(String url, Class<T> responseType, Object... uriVariables)
解析: url为请求地址,responseType为请求响应体body的包装类型,uriVariables为url中的参数绑定
注意:uriVariables是一个数组,所以他的顺序会对应url中占位符定义的数字的顺序
getForEntity(String url, Class<T> responseType, Map<String, ?> uriVariables)
解析:这里只有uriVariables这个参数不同,这里使用了Map类型,
注意:使用该方法进行参数绑定时需要在占位符中指定Map的key
例如:
RestTemplate restTemplate = new RestTemplate();
Map<String, String> params = new HashMap<>();
params.put("name","dada");
ResponseEntity<String> responseEntity = restTemplate.getForEntity("http://SERVICE-
USER/user?name={name}", String.class, params);
getForEntity(URI url, Class<T> responseType)
解析:该方法使用URI替换之前的url和urlVariables参数来指定访问地址和参数绑定。
例如:
RestTemplate restTemplate = new RestTemplate();
UriComponents uriComponenets = UriComponentsBuilder.formUriString{
"http://USER-SERVICE/user?name={name}"
.build()
.expand("dodo")
.encode();
}
URI uri = UriComponents.toUri();
ResponseEntity<String> responseEntity = restTemplate.getForEntity(uri,
String.class).getBody();
--第二种:getForObject()函数
解析:它可以理解为getForEntity的进一步封装,它通过HttpMessageConverterExtractor对HTTP请求响应体body内容进行
对象转换,实现请求直接返回包装好的对象内容
例如:
RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject(uri, String.class);
当body是一个User对象的时候,可以直接这样实现
RestTemplate restsTemplate = new RestTempalte();
User user = restTemplate.getForObject(uri, User.class);
使用场景:当不需要关注请求响应除body外的其他内容时,该函数就非常好用,可以少一个从Response中获取body的步骤。
三个重载方法:
1.getForObject(String url, Class<T> responseType, Object... uriVariables)
解析:url指定访问的地址,responseType指定访问的地址,urlVariables为url中占位符对应的参数
2.getForObject(String url, Class<T> responseType, Map<String, ?> uriVariables)
解析:该函数使用Map类型的urlVariables替代上面数组形式的urlVariables,因此使用时在url中需要将占位符的
名称与Map类型中的Key一一对应设置
3.getForObject(URI url, Class<T> responseType)
解析:该方法使用URI对象来替换之前的url和urlVariabels参数使用
-Post请求
在RestTempalte中,对POST请求时可以通过如下三个方法进行调用
--第一种:postForEntity()函数
解析:该方法与Get请求中的getForEntity()函数类似,返回ResponseEntity<T>对象,其中T为请求响应的body类型。
例如:
RestTemplate restTemplate = new RestTempalte();
User user = new User("didi", 30);
ResponseEntity<String> responseEntity = restTemplate.postForEntity("http://USER-SERVICE/user",
user, String);
String body = responseEntity.getBody();
三个重载方法:
1.postForEntity(String url, Object request, Class<T> responseType, Object... uriVariables)
2.postForEntity(String url, Object request, Class<T> responseType, Map<String, ?> uriVariables)
3.postForEntity(URI url, Object request, Class<T> responseType)
解析:重载函数中的uriVariables用来对url中的参数进行绑定,responseType参数是对请求响应的body内容的类型定
义
注意:新增的request参数,改参数可以是一个普通的对象,也可以是一个HttpEntity对象。
如果request是一个普通对象时,RestTemplate会将这个普通对象转换成HttpEntity对象来处理,其中Object就是
request的类型,request内容会被当成一个完整的body来处理;
如果resuqet是一个HttpEntity对象时,那么request会被当成一个完整的HTTP请求对象来处理,这个request中不
仅包含了body内容,也包含了header的内容
--第二种:postForObject()函数
解析:它简化了postForEntity()的后续处理,通过直接将请求响应的body内容包装陈对象来简化返回使用。
例如:
RestTemplate restTemplate = new RestTemplate();
User user = new User("didi", 20);
String postResult = restTemplate.postForObject("http[://USER-SERVICE/user", user, String.class);
三个重载方法:
postForObject(String url, Object request, Class<T> responseType, Object... uriVariables)
postForObject(String url, Object request, Class<T> responseType, Map<String, ?> uriVariables)
postForObject(URI url, Object request, Class<T> responseType)
解析:参考postForEntity说明
--第三种:postForLocation()函数
解析:该函数实现了以post请求提交资源,并放回新资源的URI
例如:
User user = new User("didi", 40);
URI responseUri = restTemplate.postForLocation("http://USER-SERVICE/user", user);
三个重载方法:
postForLocation(String url, Object request, Object... uriVariables)
postForLocation(String url, Object request, Map<String, ?> uriVariables)
postForLocation(URI url, Object request)
解析:由于postForLocation函数会返回新资源的URI,该URI就相当于指定了放回类型,所以此方法实现的post请求不需
要像postforEntity和postForObject一样执行responseType。
其他参数用法相同
-Put请求
在RestTemplate中,对PUT请求可以通过put方法进行调用实现
例如:
RestTemplate restTemplate = new RestTemplate();
Long id = 100L;
User user = new User("didi", 40);
restTemplate.put("http://USER-SERVICE/user/{1}", user, id);
解析:put函数返回类型为void类型,所以没有返回内容,也就没有其他函数定义的responseType参数,除此之外的其他传入参数定义和
用法与postForObject基本一致。
-Delete请求
在RestTemplate中,对DELETE请求可以通过delete方法进行调用实现
例如:
RestTemplate restTemplate = new RestTemplate();
Long id = 100L;
restTemplate.delete("http://USER-SERVICE/user/{1}",id);
三个重载方法:
delete(String url, Object... urlVariables)
delete(String url, Map urlVariables)
delete(URI uri)
解析:由于我们在进行REST请求时,通常都将delete请求的唯一标识拼接在url中,所以delete请求也不需要requestType的body信
息,就如上面三个函数一样,非常简单。
url指定delete请求的位置,urlVariable绑定url中的参数即可。
相关推荐
Python与Wind量化接口实战:从配置到数据提取全流程解析
本文详细解析了Python与Wind量化接口的实战应用,从环境配置到数据提取全流程。通过Anaconda管理Python环境,安装WindPy接口,实现历史行情、截面数据和实时行情的查询与优化。文章还提供了高级功能如批量查询、数据缓存策略及实战案例,帮助开发者高效构建量化分析框架。
Spring RestTemplate中常用的请求方式
本文主要从以下四个方面来看RestTemplate的使用: GET请求POST请求PUT请求DELETE请求 GET请求 在RestTemplate中,发送一个GET请求,我们可以通过如下两种方式: 第一种:getForEntity getForEntity方法的返回值是一个ResponseEntity,ResponseEntity是Spring对HTTP请求响应的封
从零开始:如何用Kimi OK Computer快速生成专业级数据分析报告和PPT(附实战案例)
本文详细介绍了如何利用Kimi OK Computer智能体模式,从零开始快速生成专业级数据分析报告和演示文稿。通过实战案例,解析了其任务规划、联网搜索、多工具协同和内容排版等核心能力,并提供了精准指令构造、工作流引导及成果精修的完整步骤,帮助用户高效完成从数据到成品的端到端交付。
restTemplate.getForEntity()与restTemplate.getForObject()区别
总的来说,如果你对HTTP响应的所有细节不感兴趣,只想获取响应体中的数据,并且希望在服务器返回非200状态码时抛出异常,那么使用getForObject()方法可能更为简洁和方便。而如果你需要处理HTTP响应的所有细节,或者你希望对响应进行某些特殊处理,那么使用getForEntity()方法可能更为合适。如果服务器返回的HTTP状态码是200,那么这个方法会正常工作。这两种方法都用于通过HTTP请求获取远程服务器的数据,但它们的区别在于返回的数据类型和错误处理方式。
使用Avalonia跨Linux平台
Avalonia类似使用WPF的技术方法来开发,所以,需要会使用WPF,其中的一些语法和写法与WPF有所区别,但是他们相差不大,会WPF的话,基本上可以看看文档后,完全掌握Avalonia的使用,从而达到跨平台开发的任务。其实写法有些不一样,可以参考官网的说明,进行修改。2. 安装完成后,重启VS2022,我们可以看到1和2,其中1是使用MVVM模式开发,2是普通模式开发,我们选择2,建立项目。9.直接双击粉红色的文件,进行安装,输入密码,但是美中不足的是,好像没有图标,图标似乎需要单独去设置。
拜耳阵列(Bayer Pattern)和解马赛克简介
拜尔阵列由柯达的布莱斯·拜尔发明,拜尔阵列将更多的像素用于绿色,而不是红色和蓝色,因为人眼对绿色更敏感。但这张照片,每个像素只有rgb中的一种颜色,每个像素还缺少其它两个颜色分量,效果如下图3所示。典型的图像传感器(例如我们在数码相机中使用的图像传感器,主要有CCD, CMOS)由许多单独的光电传感器组成,所有这些传感器都会捕获光线。如果想要获得不同颜色的光,最直接的做法是加入不同颜色的滤镜,从而滤出 RGB 三个通道的颜色。这个覆盖层可以理解为一个过滤层,每种类型的过滤器通常只允许一种颜色的光线的通过。
SpringCloud之RestTemplate的用法精讲
什么是RestTemplate RestTemplate 是从 Spring3.0 开始支持的一个 HTTP 请求工具,它提供了常见的REST请求方案的模版,例如 GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange 以及 execute。RestTemplate 继承自 InterceptingHttpAccessor 并且实现了 RestO...
Linux yum源配置以及yum命令讲解
前面为大家介绍了RPM二进制包安装软件,RPM包安装的最大的缺点也提到过,就是依赖性太强,一旦遇到依赖问题,则需要我们手动解决包之间具有依赖性的问题,今天为大家介绍一种可自动解决包之间依赖关系的安装方式:yum。 yum 全称“Yellow dog Updater, Modified”,是一个专门为了解决包的依赖关系而存在的软件包管理器。就好像 Windows 系统上我们通常可以通过各种软件管家实现软件的一键安装、升级和卸载,yum就是Linux 系统中的一键安装工具。yum 解决依赖关系的基本逻辑是:yu
简记RestTemplate的用法
参考:https://blog.csdn.net/jinjiniao1/article/details/100849237 博主:江南一点雨 本文归纳自 慕课网 江南一点雨老师 的学习笔记,大家可以购买他的课程学习。 GET请求 API:getForEntity 与 getForObject 相同:可传递参数 区别:返回值类型 getForEntity:返回ResponseEntity实例,内部包含响应数据与响应头 getForObject:仅返回指定类型的响应数据 getForEntity的使
GD32F303开发实战(一):从零搭建MDK工程与时钟配置详解
本文详细介绍了如何从零开始为GD32F303微控制器搭建一个清晰、可维护的MDK工程模板。内容涵盖开发环境准备、工程目录结构规划、文件分组管理、关键工程配置,并重点解析了时钟树原理,手把手指导配置108MHz系统时钟。通过实战步骤与常见问题排查,帮助开发者构建一个稳定可靠的开发基础,便于后续功能扩展。
C++ getline函数详解与示例代码
每次调用函数时,会读取一行文本,并将其存储在字符串对象中。在循环中,我们检查读取到的文本是否为空行,如果是则跳出循环,否则输出读取到的文本。这个函数在处理用户输入、文件读取等场景中非常有用,希望能对您的C++编程有所帮助。函数是一个常用的字符串输入函数,可以用于从输入流中读取一行文本。首先,我们输出提示信息,要求用户输入一行文本。函数会等待用户输入,并将输入的文本存储在。函数从输入流中读取一行文本,并将其存储在字符串对象。这样,当用户输入制表符时,函数会停止读取。函数的用法,并提供相应的示例代码。
RestTemplate 用法详解
上篇文章带大家学习了一下基本的微服务环境搭建,由 provider 提供服务, consumer 通过 DiscoveryClient 先去 eureka 上获取 provider 的服务的地址,获取到地址之后再去调用相关的服务。在服务的调用过程中,使用到了一个工具,叫做 RestTemplate,RestTemplate 是由 Spring 提供的一个 HTTP 请求工具。在上文的案例中,开发者...
2022年全国职业院校技能大赛 高职组大数据技术与应用卷⑦——解析答案
大数据时代,电商经营模式发生很大改变。在传统运营模式中,缺乏数据积累,人们在做出一些决策行为过程中,更多是凭借个人经验和直觉,发展路径比较自我封闭。而大数据时代,为人们提供一种全新的思路,通过大量的数据分析得出的结果将更加现实和准确。商家可以对客户的消费行为信息数据进行收集和整理,比如消费者购买产品的花费、选择产品的渠道、偏好产品的类型、产品回购周期、购买产品的目的、消费者家庭背景、工作和生活环境、个人消费观和价值观等。通过数据追踪,知道顾客从哪儿来,是看了某网站投放的广告还是通过朋友推荐链接,是新访客还是
RestTemplate 详解
背景这段时间自己做的项目中需要调用服务提供者的服务(接口),具体就是:我这边需要将页面所输入的 Groovy 脚本代码传给别人提供的服务接口,然后那边返回脚本编译的结果给我,我需要将编译结果展示在页面,用的就是 RestTemplate 了,那 RestTemplate 是什么呢?简单说就是:简化了发起 HTTP 请求以及...
win10 跳过U8环境检测的IE WebControls.rar
win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
Springboot — RestTemplate详解
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。 我之前的HTTP开发是用apache的HttpClient开发,代码复杂,还得操心资源回收等。代码很复杂,冗余代码多,稍微截个图,这是我封装好的一个post请求工具: 本教程将带领大家实现Spring生态内RestTemplate的Get请求和Post请求还有exchange指定请求类型的实践和RestTemplate核心方法源码
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
Spring之RestTemplate详解
文章目录1 RestTemplate1.1 引言1.2 环境配置1.2.1 非Spring环境下使用RestTemplate1.2.2 Spring 环境下使用 RestTemplate1.3 API 实践1.3.1 GET请求1.3.1.1 不带参请求1.3.1.2 带参的get请求(使用占位符号传参)1.3.1.3 带参的get请求(restful风格)1.3.1.4 getForEntity使用示例1.3.2 POST请求1.3.2.1 模拟表单请求1.3.2.2 模拟表单请求(传递对象)1.3.2.
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
RestTemplate使用详解
一、什么是RestTemplate RestTemplate 是从 Spring3.0 开始支持的一个 HTTP 请求工具,它提供了常见的REST请求方案的模版,例如 GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange 以及 execute。RestTemplate 继承自 InterceptingHttpAccessor 并且实现了 RestOperations 接口,其中 RestOperations 接口定义了基本的 RESTf...
详解 RestTemplate 操作
详解 RestTemplate 操作作为开发人员,我们经常关注于构建伟大的软件来解决业务问题。数据只是软件完成工作时 要处理的原材料。但是如果你问一下业务人员,数据和软件谁更重要的话,他们很可能会选择 数据。数据是许多业务的生命之血。软件通常是可以替换的,但是多年积累的数据是永远不能 替换的。近几年来,以信息为中心的表述性状态转移(Representational State Transfer
1327



被折叠的 条评论
为什么被折叠?



