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 {
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

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

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

上述代码最核心的是:

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

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小林想被监督学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值