我要查1的过程中,把2的信息一并返回,怎么实现?
在服务调用关系中,会有两个不同的角色:
服务提供者:被其它微服务调用的服务。(提供接口给其它微服务)
服务消费者:调用其它微服务的服务。(调用其它微服务提供的接口)
服务提供者与服务消费者的角色并不是绝对的,而是相对于业务而言
我们需要在order-service中向user-service发起一个http的请求
HttpClient
Apache的一个三方网络框架,网络请求做了完善的封装,api众多,用起来比较方便,开发快。但是代码复杂
OkHttp
高效的HTTP客户端,它能允许同一ip和端口的请求重用一个socket,这样能够降低网络连接的时间
RestTemplate
Spring 提供的用于访问Rest服务的客户端,提供多种便捷访问远程Http服务的方法,大大提高客户端的编写效率
spring-web环境中已经提供了RestTemplate,不需要单独导入,直接注入到IOC容器使用即可
——————————————————————————————————————————————
- 启动类就是一个配置类,因此可以在启动类中向IOC容器注入 RestTemplate 对象
2.在OrderService中调用用户微服务UserController中的方法,根据id获取user对象
@Service
public class OrderService {
@Autowired
private OrderMapper orderMapper;
@Autowired
private RestTemplate restTemplate;
public Order findOrderByUserId(Long orderId) {
// 1.查询订单
Order order = orderMapper.selectById(orderId);
// 2.调用用户微服务
String url = "http://localhost:8081/user/" + order.getUserId();
User user = restTemplate.getForObject(url, User.class);
// 3.封装用户到订单中
order.setUser(user);
// 4.返回
return order;
}
}