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 对象

java 复制代码
@Configuration
public class BeanConfig {
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

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

java 复制代码
@Service
public class OrderService {
    @Autowired
    private OrderMapper orderMapper;

    @Autowired
    private 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;
    }
}

上述代码最核心的是:

java 复制代码
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 请求给商品服务,获取商品信息。

相关推荐
青瓦梦滋5 分钟前
Linux高级IO
linux·运维·服务器·网络·网络协议·tcp/ip
xieliyu.1 小时前
HTTPS 加密流程深度解析|从 HTTP 痛点到 TLS 握手全过程
网络·笔记·网络协议·计算机网络·http·https
我爱cope1 小时前
【计算机网络 | 传输层5:TCP 如何实现可靠传输?滑动窗口、累计确认与重传机制】
网络·网络协议·学习·tcp/ip·计算机网络·传输层
蓝速科技2 小时前
固定涉外场景台式翻译机选型与落地指南
网络·人工智能·自然语言处理·语音识别·技术分享
Java小学生丶2 小时前
[开源自荐] ZTShell,一个使用 Tauri 2 + Rust 全程由 AI 开发的跨平台桌面 SSH 工具
linux·网络·centos7·云服务器·开发技巧·资源分享·个人私货
星 海3 小时前
【网络】VirtualBox网络模式
网络·虚拟机·virtualbox·vm
测试猿实操笔记10 小时前
DNS 通俗讲解:域名 ↔ IP 翻译
网络·网络协议·tcp/ip
zhengqweasd10 小时前
流量没跑满、带宽空闲,业务依然卡顿
运维·服务器·网络
liyuanchao_blog11 小时前
OVN/OVS场景下虚拟机新网卡通过 DHCP 获取 IP 地址的完整过程
网络·网络协议·tcp/ip·云计算
今天AI了吗11 小时前
DeepSeek Harness 深度解析:从评测架构到实战落地
java·网络·数据库·人工智能·架构·java-ee