1、什么是RestTemplate
RestTemplate是Spring提供的用于访问Rest服务的客户端,它提供了很多可以方便访问远程http服务的方法,这些方法可以帮助开发人员减少编写客户端代码的工作量。
2、什么是REST
REST(Representational State Transfer)表述性状态转移。REST是一种跨平台、跨语言的架构风格。是利用HTTP的特性去设计的一种规范。
特性:
1)面向资源,以资源抽象为核心进行展开的。资源(文档,图片,一条数据)就是存在服务器上的任何信息,我们需要一个唯一的标记去操作这个资源,我们把这个标记称之为URI。
2)可寻址,资源在Web 服务器上都有唯一的地址。
3)联通性,我们在设计的不能把资源隔离开来,要考虑资源关联关系,并且通过超链接的形式将资源关联起来。
4)无状态,只有无状态才能够实现资源的可伸缩性。
5)利用GET、PUT、DELETE、POST来表示操作动作。
3、对客户端进行升级改造
在原来的 UserController 基础上,添加如下图中的代码:
@Autowired
private LoadBalancerClient loadBalancerClient;
ServiceInstance serviceInstance = loadBalancerClient.choose("spring-cloud-product-service");
String url = String.format("http://%s:%s/product/getProduct", serviceInstance.getHost(), serviceInstance.getPort());
注释掉 RestConfig 中的 @LoadBalanced 注解
在 spring-cloud-product-service 模块中增加如下配置:
eureka.instance.prefer-ip-address=true
eureka.instance.ip-address=192.168.220.1
eureka.instance.instance-id=${eureka.instance.ip-address}:${server.port}
重新启动 spring-cloud-product-service 的两个节点,查看 Eureka Server 控制台中注册实例的变化
4、请求测试
请求服务端的地址已经被替换过来了
查看 Postman 中的请求记录