spring-cloud 开发 - RestTemplate 远程调用 HTTP 接口

        现在有这样一个场景,我们要实现一个订单服务和一个商品服务,两个服务程序部署在不同的服务器上,当我们获取订单信息时,订单信息中要包含有商品信息,所以订单服务要向商品服务发送请求获取商品信息,这个流程怎么实现呢?

        订单服务和商品服务在两个不同的服务器上,所以订单服务要想获取商品信息就得发送 HTTP 请求给商品服务获取,这个 HTTP 请求的发送就得用到 RestTemplate 

RestTemplate

        RestTemplate 是 Spring Framework 中的一个类,用于发送 HTTP 请求到 RESTful Web 服务。它提供了多种方法来发送请求(GET、POST、PUT、DELETE 等),并将响应转换为 Java 对象。RestTemplate 简化了与 RESTful 服务的交互,使得发送 HTTP 请求和处理响应变得更为简单和直观。

解决流程

1.向 Spring 的 IoC 容器中注入 RestTemplate 对象

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

2.注入 RestTemplate 对象并发送 HTTP 请求到对应接口获取数据

@Service
public class OrderService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate RestTemplate restTemplate;public OrderInfo selectOrderById(Integer orderId){OrderInfo orderInfo = orderMapper.selectOrderById(orderId);String url = "http://127.0.0.1:9090/product/info/"+orderInfo.getProductId();ProductInfo productInfo = restTemplate.getForObject(url, ProductInfo.class);orderInfo.setProductInfo(productInfo);return orderInfo;}
}

上述代码最核心的是:

String url = "http://127.0.0.1:9090/product/info/"+orderInfo.getProductId();
ProductInfo productInfo = restTemplate.getForObject(url, ProductInfo.class);

        url 是商品服务器提供的获取商品信息的接口,restTemplate 对象调用 getForObject 表示向 url 对应的接口发送 HTTP 请求,将获取到的数据转换成 ProductInfo 类型的对象并返回

        此时我们就完成了在订单服务上发送 HTTP 请求给商品服务,获取商品信息。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux平台I2C多字节数据、按页连续读写E2PROM Demo(AT24C16)

1)Linux 平台I2C多字节数据按页连续读写E2PROM之AT24C16小知识,分享给将要学习或者正在学习Linux平台I2C多字节按页连续读写E2PROM开发的同学。 2)内容属于原创,若转载,请说明出处。 3)提供相关问题有偿答…

class中的溢出滑动效果

效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><style>*{margin: 0;padding: 0;}.frame-pages{width: 30%;height: 60px;display: flex;justify…

网络安全-如何设计一个安全的API(安全角度)

目录 API安全概述设计一个安全的API一个基本的API主要代码调用API的一些问题 BasicAuth认证流程主要代码问题 API Key流程主要代码问题 Bearer auth/Token auth流程 Digest Auth流程主要代码问题 JWT Token流程代码问题 Hmac流程主要代码问题 OAuth比较自定义请求签名身份认证&…

测试工程师常见的面试问题及回答建议

说起软件测试近几年的发展&#xff0c;其实已悄无声息地发生了巨大的变化。前几年随着互联网行业的迅猛发展&#xff0c;软件测试人才稀缺&#xff0c;低门槛高薪资促使大批毕业生和转行人员一窝蜂地涌入。而现在&#xff0c;软件测试发展太快&#xff0c;纵观各大招聘网站&…

一个端口可以建多少个tcp链接

Linux内核对TCP连接的识别是通过四元组来区分&#xff0c;即&#xff08;源ip&#xff0c;源port&#xff0c;目标ip&#xff0c;目标port&#xff09;。这个四元组只要任意一个不同&#xff0c;就是完全不同的连接&#xff01;所以说&#xff0c;只要建立的连接是不同的&#…

本科生大厂算法岗实习经验复盘:从投递到面试的底层思维!

目录 投递渠道boss直聘官网邮箱内推 面试准备leetcode八股深挖项目自我介绍mock面试技巧答不出来怎么办coding反问 复盘技术交流群用通俗易懂方式讲解系列 节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面…

Java中的JDBC编程:从数据库连接到高级查询

Java中的JDBC编程&#xff1a;从数据库连接到高级查询 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代应用程序开发中&#xff0c;与数据库的交互是一个…

猫头虎分享已解决Bug || Null Pointer Exception: `java.lang.NullPointerException`

猫头虎分享已解决Bug || Null Pointer Exception: java.lang.NullPointerException &#x1f63a;&#x1f42f; 关于猫头虎 大家好&#xff0c;我是猫头虎&#xff0c;别名猫头虎博主&#xff0c;擅长的技术领域包括云原生、前端、后端、运维和AI。我的博客主要分享技术教程…

嵌入式学习——数据结构(双向无头有环链表、内核链表、栈)——day48

1. 约瑟夫环问题——双向无头回环链表 1.1 问题描述 给定 ( n ) 个人&#xff08;编号为 ( 1, 2, \ldots, n )&#xff09;&#xff0c;他们围成一个圈。从第一个人开始报数&#xff0c;每报到第 ( k ) 个人时&#xff0c;杀掉这个人&#xff0c;然后从下一个人重新开始报数。…

【Git】 -- Part1 -- 基础操作

1. Git简介 Git 是一个开源的分布式版本控制系统&#xff0c;由 Linus Torvalds 于 2005 年开发&#xff0c;主要用于源代码管理。Git 允许多名开发者共同合作处理同一个项目&#xff0c;跟踪每个文件的修改&#xff0c;并且在必要时回滚到之前的版本。 Linus Torvalds是Linux…

面试突击:深入理解 Java 中的异常

本文已收录于&#xff1a;https://github.com/danmuking/all-in-one&#xff08;持续更新&#xff09; 前言 哈喽&#xff0c;大家好&#xff0c;我是 DanMu。今天想和大家聊聊 Java 中的异常。异常处理是一种重要的概念&#xff0c;因为程序总是会出现各种意料之外的问题&…

openEuler2203SP3自定义ios

需求&#xff1a; 1、legacy启动 2、/boot分区1G&#xff0c;剩余给/&#xff0c;lvm分区 3、创建root密码和一个普通用户user&#xff0c;密码Hello2024 4、服务器安装&#xff08;选上development、legacy-unix、security-tools&#xff09; 5、关闭firewalld、selinux …

通过xml配置实现数据动态导入导出Excel

spring-dj-excel-common.jar 一个可以通过动态配置 xml 建立 Excel 与数据关系现实数据导入导出的 spring 组件包&#xff0c;在 xml 配置文件里&#xff0c;你可以很方便的定义 Excel - sheet 表列头文本与数据表、数据实体属性的对应关系&#xff0c;对于创建 Excel 文件&…

尽管担任社长 宫崎英高95%时间还是在做游戏

宫崎英高表示&#xff0c;虽然他是 FromSoftware 工作室的社长&#xff0c;但他日常工作的绝大部分时间都是在指导游戏开发。因魂系列大获成功而成为 FromSoftware 社长的宫崎英高在接受《卫报》采访时表示&#xff0c;企业高管生活并不是他的兴趣所在。 “我喜欢帮助年轻的监督…

cesium for unity 打包webgl失败,提示不支持

platform webgl is not supported with HDRP use the Vulkan graphics AR instead.

Linux-PXE批量安装

一、部署 PXE 远程安装服务 在大规模的 Linux 应用环境中&#xff0c;如 Web 群集、分布式计算等&#xff0c;服务器往往并不配备光驱设备&#xff0c;在这种情况下&#xff0c;如何为数十乃至上百台服务器裸机快速安装系统呢&#xff1f;传统的 USB光驱、移动硬盘等安装方法显…

双向滑动选择器

插件地址:https://ext.dcloud.net.cn/plugin?id3940 注意: 当改变值是,让滑块自动滑动需要调用: this.$refs.powerSlider.updateValue(that.tempPowerValue[0], that.tempPowerValue[1], false); <view style"width: 90%;margin: 15px"><cj-slider ref…

CAS Apereo 5.3.16 实现单点登录

1.CAS部署 服务端下载地址&#xff1a;cas5.3 1.下载好打开后&#xff0c;复制target/cas/WEB-INF/classes/META-INF/spring.factories target/cas/WEB-INF/classes/services下的Apereo-10000002.json和HTTPSandIMAPS-10000001.json target/cas/WEB-INF/classes下的applicati…

挑战Midjourney,融合近百个SD大模型的通用模型AlbedoBase XL

在SDXL的通用模型中&#xff0c;DreamShaperXL和juggernautXL这2款大模型一直都深受广大AI绘画者的喜爱&#xff0c;不可否认&#xff0c;这2款通用模型在很多方面表现都相当出色。 今天再给大家介绍一款基于SDXL的通用大模型&#xff1a;AlbedoBase XL&#xff0c;作者的目标…

关于Python函数中的self、冒号和箭头稍微说一下

在Python中,函数的定义使用关键字def,后跟函数名、函数参数和冒号:,然后是函数体,函数体内的代码需要缩进。例如: def greet(name):print("Hello, " + name + "!") 上面的函数中有一个名为name的参数,这个参数并没有指定参数类型,这个不像c或者c+…