当前位置: 首页 > news >正文

4-1 SpringCloud快速开发入门:RestTemplate类详细解读

RestTemplate类详细解读

RestTemplate 的 GET 请求

Get 请求可以有两种方式:
第一种:getForEntity
该方法返回一个 ResponseEntity对象,ResponseEntity是 Spring 对
HTTP 请求响应的封装,包括了几个重要的元素,比如响应码、contentType、
contentLength、响应消息体等;

在这里插入图片描述
在这里插入图片描述

ResponseEntity<String> responseEntity = 
restTemplate.getForEntity("http://01-SPRINGCLOUD-SERVICE-PROVIDER/service/hello", 
String.class); String body = responseEntity.getBody(); 
HttpStatus statusCode = responseEntity.getStatusCode(); 
int statusCodeValue = responseEntity.getStatusCodeValue(); 
HttpHeaders headers = responseEntity.getHeaders(); System.out.println(body); 
System.out.println(statusCode); 
System.out.println(statusCodeValue); 
System.out.println(headers); 

以上代码:
getForEntity 方法第一个参数为要调用的服务的地址,即服务提供者提供的http://01-SPRINGCLOUD-SERVICE-PROVIDER/service/provide 接口地址,注意这里是通过服务名调用而不是服务地址,如果改为服务地址就无法实现客户端负载均衡了。

getForEntity 方法第二个参数 String.class 表示希望返回的 body 类型是 String 类型,如果希望返回一个对象,也是可以的;

另外两个重载方法:

方法一:public ResponseEntity getForEntity(String url, Class responseType, Object… uriVariables) throws RestClientException

集合参数请求根据占位符:

restTemplate.getForEntity(“http://01-SPRINGCLOUD-SERVICE-PROVIDER/service/provide?id={1}&name={2}”, String.class, “{1, ‘张无忌’}”).getBody(); //{1, ‘张无忌’}跟占位符对应

方法二:public ResponseEntity getForEntity(String url, Class responseType, Map<String, ?> uriVariables) throws RestClientException

map参数请求根据键:

Map<String, Object> paramMap = new ConcurrentHashMap<>();
paramMap.put(“id”, 1);
paramMap.put(“name”, “张无忌”);
restTemplate.getForEntity(“http://01-SPRINGCLOUD-SERVICE-PROVIDER/service/provide?id={id}&name={name}”, String.class, paramMap).getBody();

第二种:getForObject() 与 getForEntity 使用类似,只不过 getForObject 是在getForEntity 基础上进行了再次封装,可以将 http 的响应体 body信息转化成指定的对象接收,方便我们的代码开发;

当你不需要返回响应中的其他信息,只需要 body 体信息的时候,可以使用这个更方便;

它有三个个重载的方法,和 getForEntity 相似;

T getForObject(URI url, Class responseType) throws RestClientException;

T getForObject(String url, Class responseType, Object… uriVariables) throws RestClientException;

T getForObject(String url, Class responseType, Map<String, ?> uriVariables) throws RestClientException;

RestTemplate 的 POST 请求:

Post 与 Get 请求非常类似:

restTemplate.postForObject()
restTemplate.postForEntity()
restTemplate.postForLocation()

RestTemplate 的 PUT 请求:

restTemplate.put();

RestTemplate 的 DELETE 请求:

restTemplate.delete();

相关文章:

4-1 SpringCloud快速开发入门:RestTemplate类详细解读

RestTemplate类详细解读 RestTemplate 的 GET 请求 Get 请求可以有两种方式&#xff1a; 第一种&#xff1a;getForEntity 该方法返回一个 ResponseEntity对象&#xff0c;ResponseEntity是 Spring 对 HTTP 请求响应的封装&#xff0c;包括了几个重要的元素&#xff0c;比如响…...

【IDEA】【工具】幸福感UP!开发常用的工具 插件/网站/软件

IDEA 插件 CodeGlance Pro —— 代码地图 CodeGlance是一款非常好用的代码地图插件&#xff0c;可以在代码编辑区的右侧生成一个竖向可拖动的代码缩略区&#xff0c;可以快速定位代码的同时&#xff0c;并且提供放大镜功能。 使用:可以通过Settings—>Other Settings—&g…...

【蓝桥杯集训·每日一题】AcWing 1562. 微博转发

文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴宽搜BFS一、题目 1、原题链接 1562. 微博转发 2、题目描述 微博被称为中文版的 Twitter。 微博上的用户既可能有很多关注者&#xff0c;也可能关注很多其他用户。 因此&am…...

[busybox] busybox生成一个最精简rootfs(下)

书接上回&#xff1a;[busybox] busybox生成一个最精简rootfs(上) 本篇介绍几个rootfs中用到的“不是那么重要的”几个文件。 9 /etc/shadow 和 /etc/passwd 曾经&#xff0c;/etc/passwd 文件用于存储独立 Linux 系统中的所有登录信息。 后来&#xff0c;由于以下原因&…...

Java奠基】运算符的讲解与使用

目录 运算符与表达式的使用 算术运算符 隐式转换与强制转换 自增自减运算符 赋值运算符 关系运算符 逻辑运算符 三元运算符 运算符与表达式的使用 运算符是指&#xff1a;对字面量或者变量进行操作的符号。 表达式是指&#xff1a;用运算符把字面量或者变量连接起来&…...

开发一个会员管理系统

背景 由于现在公司内客户量剧增&#xff0c; 简单的靠电话及笔记本记录&#xff0c;来维护客户有些困难&#xff0c;但又不想去花钱购买那些专业版的会员管理系统&#xff0c;只能自己动手撸一个相对简易的会员系统来使用了。 开发语言及使用技术 后端&#xff1a;java、mys…...

华为OD机试题【找出通过车辆最多颜色】用 C++ 进行编码 (2023.Q1)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明找出通…...

如何根据子网掩码计算出网络前缀(prefix)

我们知道子网掩码是对IP地址的网络地址的标注。把IP地址中网络地址位设置为1,主机地址位设置为0,得到的就是子网掩码。除了用子网掩码表示IP地址的网络地址和主机地址外,还可以用network prefix(网络前缀),比如192.168.0.1/16,这里的16就是prefix,也就是网络地址位的位…...

【FATE联邦学习】Fateboard的使用

fateboard文档 https://fate.fedai.org/fateboard/ github Fateboard文档 https://github.com/FederatedAI/FATE-Board/blob/master/README-CN.md 背景 Fateboard是FATE框架的任务看板。 在配置FATE时&#xff0c;Fateboard一般是被安装好了的&#xff0c;安装过程查看这里 A…...

解决vue3没有this造成的无法使用vue2

在Vue2项目中可以使用this.$router.push等方法进行路由的跳转&#xff0c;但是在Vue3的setup函数里&#xff0c;并没有this这个概念&#xff0c;因此如何使用路由方法 1.// 在新的vue-router里面尤大加入了一些方法&#xff0c;比如这里代替this的useRouter&#xff0c;具体使用…...

百度前端二面vue面试题指南

Vue 组件间通信有哪几种方式&#xff1f; ​ Vue 组件间通信是面试常考的知识点之一&#xff0c;这题有点类似于开放题&#xff0c;你回答出越多方法当然越加分&#xff0c;表明你对 Vue 掌握的越熟练。Vue 组件间通信只要指以下 3 类通信&#xff1a;父子组件通信、隔代组件通…...

【备战面试】每日10道面试题打卡-Day1

本篇总结的是Java基础知识相关的面试题&#xff0c;后续也会更新其他相关内容 文章目录1、JVM、JRE和JDK的关系&#xff1f;2、Java语言有哪些特点&#xff1f;3、Java和C的区别有哪些&#xff1f;4、Java有哪些数据类型&#xff1f;5、访问修饰符 public、private、protected&…...

服务器重启后jar包自动重启

1、创建自动启动脚本 vi /etc/rc.d/auto_start_script.sh #!/bin/bash #添加本地Java环境&#xff0c;这两句必须添加&#xff01;不然报错&#xff0c;找不到java命令 export JAVA_HOME/java/jdk1.8.0_181 export PATH$JAVA_HOME/bin:$PATH #系统引导后延迟5秒执行脚本&#x…...

Ubuntu 交叉编译工具链安装

Ubuntu 交叉编译工具链安装 1 交叉编译器安装 ARM 裸机、Uboot 移植、Linux 移植这些都需要在 Ubuntu 下进行编译&#xff0c;编译就需要编译器&#xff0c;我们在第三章“Linux C 编程入门”里面已经讲解了如何在 Liux 进行 C 语言开发&#xff0c;里面使用 GCC 编译器进行代…...

Vue3中ref、reactive、toRef、toRefs基本用法和区别

ref、reactivesetup 函数中默认定义的变量并不是响应式的&#xff08;即数据变了以后页面不会跟着变&#xff09;&#xff0c;如果想让变量变为响应式的变量&#xff0c;需要使用 ref 和 reactive 函数修饰变量。区别&#xff1a;reactive只能传入对象类型的参数&#xff0c;所…...

python hash 不一致踩坑总结

背景 在线上的一次模型对照实验中&#xff0c;发现对同一个用户进行 hash 分流时&#xff0c;会生成不同的 random 值&#xff0c;导致实验数据污染 原因 参考&#xff1a;https://www.zhihu.com/question/57526436 python 的字符串 hash 算法并不是直接遍历字符串每个字符去…...

qt5.15 快速安装 国内源

1 qt5.15 安装问题 最大的问题就是需要在线下载与安装。即使挂了科学上网&#xff0c;国外的服务器下载速度也还是超级慢。 在网上找了各种解决办法后&#xff0c;终于找到一个快速下载安装的办法。 2 安装器下载 阿里源、清华源都没有Windows的安装器了&#xff0c;在腾讯…...

JavaScript 对象

文章目录JavaScript 对象所有事物都是对象JavaScript 对象访问对象的属性访问对象的方法创建 JavaScript 对象创建直接的实例使用对象构造器创建 JavaScript 对象实例把属性添加到 JavaScript 对象把方法添加到 JavaScript 对象JavaScript 类JavaScript for...in 循环JavaScrip…...

数据库设计三大范式

数据库设计遵循三大范式的理由&#xff1a;在面对复杂是数据库设计的时候&#xff0c;设计数据库要遵循一定的规则&#xff0c;有了一定的规范&#xff0c;这样就可以是自己看起来舒服。 1&#xff0e;第一范式(确保每列保持原子性) 第一范式主要是保证数据表中的每一个字段的…...

cesium学习记录02-vue项目中cesium的配置与使用

1&#xff0c;下载cesium包 &#xff08;当然&#xff0c;使用npm install cesium安装也是可以的&#xff0c;不过在这里选择下载包放到本地&#xff09; 官方下载地址 笔者的cesium版本为1.101 2&#xff0c;将下载的Cesium文件夹放到项目里某个位置 这里&#xff0c;笔者将…...

FanControl完全指南:Windows系统风扇智能控制从零到精通

FanControl完全指南&#xff1a;Windows系统风扇智能控制从零到精通 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/…...

LabVIEW循环进阶:隧道模式与移位寄存器的实战解析

1. LabVIEW循环基础回顾与隧道模式初探 在LabVIEW编程中&#xff0c;For循环是最基础也是最常用的结构之一。很多初学者都能轻松掌握循环次数N和循环索引i的基本用法&#xff0c;但当涉及到数据进出循环时的处理方式&#xff0c;往往会遇到困惑。这就是我们今天要重点讨论的隧…...

AI命令行自动执行工具:从剪贴板监听、内容过滤到终端注入的实现原理

1. 项目概述&#xff1a;一个让Claude“粘贴”命令行的效率工具如果你经常和Claude这类AI助手对话&#xff0c;并且需要处理命令行操作&#xff0c;那你一定遇到过这个痛点&#xff1a;Claude给出的代码片段、配置命令或者文件路径&#xff0c;你需要手动复制、切换窗口、粘贴到…...

Dell G15终极散热控制指南:开源热控中心完全教程

Dell G15终极散热控制指南&#xff1a;开源热控中心完全教程 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 厌倦了官方AWCC软件的臃肿和卡顿&#xff1f;想要…...

跨境社媒账号做不稳 很多时候不是内容不够好而是气质不够稳定

很多团队做跨境社媒时&#xff0c;最容易把注意力集中在“内容创意”上。 选题够不够新&#xff0c;切口够不够巧&#xff0c;视频开头能不能抓住人&#xff0c;标题会不会让人点开&#xff0c;这些当然都重要。但真正做久了之后会发现&#xff0c;一个账号能不能长期跑起来&am…...

终极罗技PUBG压枪宏配置指南:从新手到高手的完整教程

终极罗技PUBG压枪宏配置指南&#xff1a;从新手到高手的完整教程 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 你是否在《绝地求生》中经历过这…...

Blitz.js全栈开发框架:基于Next.js的Zero-API数据层实践

1. 项目概述&#xff1a;Blitz.js&#xff0c;一个被低估的全栈开发框架如果你和我一样&#xff0c;在过去几年里一直在用 Next.js 构建全栈应用&#xff0c;那你肯定经历过这种场景&#xff1a;前端页面写得飞快&#xff0c;但一到后端 API 路由、数据库操作、身份验证这些环节…...

Awesome List Creator:基于规则引擎的自动化资源清单生成工具

1. 项目概述&#xff1a;一个清单的“引擎”在信息过载的时代&#xff0c;无论是开发者寻找工具库&#xff0c;还是学习者梳理知识体系&#xff0c;一份结构清晰、内容精选的“Awesome List”&#xff08;优质资源清单&#xff09;都堪称无价之宝。然而&#xff0c;维护一份高质…...

海棠山铁哥:我写《凰标》,就是要打破资本定价权@凤凰标志

凰标宣言——夺回中国人的文化定价权流量高低决定作品好坏&#xff0c;资金投入定义内容价值。 当资本垄断审美、定价与生死&#xff0c; 创作者便只剩一条出路&#xff1a;宣战。一、资本逻辑&#xff1a;三座大山权力资本如何行使对创作者的结果审美话语权用流量模板批量复制…...

Python Redis 缓存策略实战:提升应用性能的最佳实践

Python Redis 缓存策略实战&#xff1a;提升应用性能的最佳实践 引言 在后端开发中&#xff0c;缓存是提升系统性能的关键技术。作为一名从Rust转向Python的开发者&#xff0c;我深刻认识到缓存策略在高并发场景下的重要性。Redis作为一款高性能的内存数据库&#xff0c;已成为…...