SpringCloud(一)微服務遠端呼叫 -- RestTemplate

一介桃白白發表於2024-03-18

專案結構

主專案cloud-demo下有兩個子專案(微服務),每個專案都代表獨立模組,都有自己獨立的資料庫。

每個專案(微服務)只負責自己模組的資料,互不干涉。

場景描述:

根據訂單ID查詢訂單詳情的同時,把訂單所屬的使用者資訊一併帶回。

這裡就涉及微服務之間的相互呼叫

實現:

1、註冊RestTemplate

在訂單微服務專案中的 Application啟動類中註冊RestTemplate

SpringCloud(一)微服務遠端呼叫 -- RestTemplate
/*
    * 建立RestTemplate並注入Spring容器
    * */
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
註冊RestTemplate

SpringCloud(一)微服務遠端呼叫 -- 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

使用者微服務中提供了相關介面截圖:

效果展示:

總結:

相關文章