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

相关推荐
Code out the future36 分钟前
【计算机网络——1.2网络边缘】
网络·计算机网络
秦矜1 小时前
网络安全技术报告
网络·安全·web安全
转角处的汤姆2 小时前
WebSocket
网络·websocket·网络协议
qq1778036232 小时前
CSOL老是服务器链接中断怎么解决
运维·服务器·网络·ddos
笑看数码3 小时前
什么牌子的无线领夹麦克风好,一篇了解哪种领夹麦性价比高
网络
Canon_YK3 小时前
超级加密狗——CBS(赛博锁)
服务器·网络·安全·web安全·网络安全
周工不想解梦3 小时前
配置WLAN 示例
网络
Kun.A.A4 小时前
基于RSA的数字签名设计与实现
网络
阿里技术4 小时前
FlinkSQL 开发经验分享
javascript·网络·经验分享·sql·flink