RestTemplate使用

news/2024/9/30 19:38:10

1. 简单介绍

RestTemplateSpring 框架 中的一个工具类,它能让发送 HTTP 消息和处理响应变得简单。RestTemplate 类提供了许多功能,非常适合编写简单的 HTTP 客户端:

  • 支持所有标准 HTTP 方法(GET、POST 等)。
  • 能够处理所有标准 MIME Type(JSON、XML、表单等)。
  • 高级 API 允许我们使用 Java 代码进行配置,并避免复杂的序列化问题。
  • 可使用 ClientHttpRequestInitializerClientHttpRequestInterceptor 接口进行自定义。

从 Spring Framework 5 开始,除了 WebFlux,Spring 还引入了一个名为 WebClient 的新 HTTP 客户端。 WebClient 是一种替代 RestTemplate 的现代 HTTP 客户端。它不仅提供传统的同步 API,还支持高效的非阻塞和异步方法。

2. GET方法


getForEntity相比较于getForObject可以访问完整的 HTTP 响应。一般情况下我们使用getForObject即可。

@GetMapping("/{id}")
@Operation(summary = "根据ID查询订单信息")
public ResponseResult getOrderById(@PathVariable Integer id){return restTemplate.getForObject(PRE_SERVER + "/pay/" + id, ResponseResult.class, id);
}

第一个参数为要访问的URL,第二个参数为返回值的类型,第三个路径参数值

3. POST方法

@Operation(summary = "新增支付订单信息")
@PostMapping
public ResponseResult saveOrder(@RequestBody PayDTO payDTO){return restTemplate.postForObject(PRE_SERVER+"/pay",payDTO,ResponseResult.class);
}

第二个参数是我们通过Http访问方法的参数,第三个是返回值类型

4.PUT方法

@PutMapping
@Operation(summary = "更新订单信息")
public ResponseResult updateOrderById(@RequestBody PayDTO payDTO){restTemplate.put(PRE_SERVER + "/pay", payDTO);return ResponseResult.success();
}

第二个参数是我们要更新的数据

5.DELETE方法

@DeleteMapping("/{id}")
@Operation(summary = "删除订单信息")
public ResponseResult deleteOrderById(@PathVariable Integer id){restTemplate.delete(PRE_SERVER+"/pay/" +id);return ResponseResult.success();
}

路径变量也可以作为方法的第二个参数。

6.完整代码

@RestController
@RequestMapping("/consumer/pay")
@Tag(name = "订单模块", description = "订单相关接口")
public class ConsumerController {@Resourceprivate RestTemplate restTemplate;private static final String PRE_SERVER = "http://localhost:8001";@Operation(summary = "新增支付订单信息")@PostMappingpublic ResponseResult saveOrder(@RequestBody PayDTO payDTO){return restTemplate.postForObject(PRE_SERVER+"/pay",payDTO,ResponseResult.class);}@GetMapping("/{id}")@Operation(summary = "根据ID查询订单信息")public ResponseResult getOrderById(@PathVariable Integer id){return restTemplate.getForObject(PRE_SERVER + "/pay/" + id, ResponseResult.class, id);}@DeleteMapping("/{id}")@Operation(summary = "删除订单信息")public ResponseResult deleteOrderById(@PathVariable Integer id){restTemplate.delete(PRE_SERVER+"/pay/" +id);return ResponseResult.success();}@PutMapping@Operation(summary = "更新订单信息")public ResponseResult updateOrderById(@RequestBody PayDTO payDTO){restTemplate.put(PRE_SERVER + "/pay", payDTO);return ResponseResult.success();}
}

需要增加配置类:

@Configuration
public class RestConfig {@Beanpublic RestTemplate restTemplate(){return new RestTemplate();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/29767.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

跨境物流网站海外客服系统对接ChatGPT大模型AI自动回复问题

去年的一个客户,主要是做跨境电商的物流运输服务,有自己的物流网站系统。 海外客户会在物流系统里咨询很多问题,有不少经常问的问题。这个时候就可以对接AI大模型,上传自己的问答数据到知识库,让AI来自动回复问题。 GPT知识库是支持多语种的,可以中英文上传知识库,都能理…

DDD面试题:DDD聚合和表的对应关系是什么 ?(来自蚂蚁面试)

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,…

一种基于光电容积波的血压测量神经网络算法,开源、低功耗、低成本的人工智能软硬件提供者

具体的软硬件实现点击 http://mcu-ai.com/ MCU-AI技术网页_MCU-AI人工智能 心血管疾病是最严重的死亡原因之一,每年在全世界造成严重的生命损失。持续监测血压似乎是最可行的选择,但这需要一个侵入性的过程,带来了几层复杂性。这促使我们开发一种方法,通过使用光体积描记图…

使用PyTorch实现L1, L2和Elastic Net正则化

在机器学习中,L1正则化、L2正则化和Elastic Net正则化是用来避免过拟合的技术,它们通过在损失函数中添加一个惩罚项来实现。 https://avoid.overfit.cn/post/c99ec105e41c4a71a0a1a29735245944

Selenium4自动化测试4--元素定位By.XPATH,元素定位最佳顺序

7-通过xpath定位,By.XPATHxpath是什么?XPath 是一门在 XML 文档中查找信息的语言xml是什么?XML(可扩展标记语言),主要用于传输数据为什么可以使用xpath定位html? XPath(XML路径语言)是一种用于在XML文档中定位元素的语言,它可以用于定位HTML文档中的元素。尽管XML和H…

基于pinctrl和GPIO子系统的按键驱动程序

嵌入式驱动开发中pinctrl和GPIO子系统使用频率非常高,其中pinctrl子系统主要用于复用和配置引脚,GPIO子系统用于设置GPIO的输入/输出,向引脚写入数据或者从引脚读取数据。一个引脚可以复用为多种不同的功能,因此要使用GPIO子系统首先要先把引脚配置为GPIO功能。下面将分为两…

从零开始写 Docker(十四)---重构:实现容器间 rootfs 隔离

本文为从零开始写 Docker 系列第十四篇,实现容器间的 rootfs 隔离,使得多个容器间互不影响。完整代码见:https://github.com/lixd/mydocker 欢迎 Star推荐阅读以下文章对 docker 基本实现有一个大致认识:核心原理:深入理解 Docker 核心原理:Namespace、Cgroups 和 Rootfs…

PCI-Express-Technology(三)

3.1 总线/设备/功能/的定义(Definition of Bus,Device and Function)正如PCI一样,每个PCIe功能(Function)的标识在其所在的设备内,以及这个设备所连接的总线内,都是唯一的。其标识符一般被称为“BDF”。对于任意一个 PCIe 拓扑结构,配置软件负责检测出拓扑中的每个Bus、…