SpringCloud(一.1)微服务远程调用 -- RestTemplate

项目结构

 主项目cloud-demo下有两个子项目(微服务),每个项目都代表独立模块,都有自己独立的数据库。

每个项目(微服务)只负责自己模块的数据,互不干涉。

 

 

场景描述:

根据订单ID查询订单详情的同时,把订单所属的用户信息一并带回。

这里就涉及微服务之间的相互调用

 

实现:

1、注册RestTemplate

在订单微服务项目中的 Application启动类中注册RestTemplate

/*
    * 创建RestTemplate并注入Spring容器
    * */
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
注册RestTemplate

@RestController
@RequestMapping("order")
public class OrderController {

   @Autowired
   private OrderService orderService;
   @Autowired
   private RestTemplate restTemplate;

    @GetMapping("{orderId}")
    public Order queryOrderByUserId(@PathVariable("orderId") Long orderId) {
        // 根据id查询订单
        Order order = orderService.queryOrderById(orderId);
        //利用RestTemplate发送http请求,根据用户ID查询用户
        //url路径
        String url ="http://localhost:8081/user/"+order.getUserId();
        User user = restTemplate.getForObject(url, User.class);
        //赋值
        order.setUser(user);
        return order;
    }
}
OrderController

用户微服务中提供了相关接口截图:

 

 

 

效果展示:

 总结:

 

posted @ 2024-03-18 00:35  一介桃白白  阅读(44)  评论(0编辑  收藏  举报