项目中使用过HttpClient、RestTemplate和FeignClient三种方式调用服务。
我是比较喜欢RestTemplate调用服务的。
下面是我自己常用的写法,反正就是根据服务返回的json格式,使用对应的数据结构进行解析:
List<Map<String, String>> serviceTraces = restTemplate.getForObject(serviceUrl, ArrayList.class);
XXXServiceResponse response = restTemplate.getForObject(url, XXXServiceResponse.class);
HashMap<String,List<Map<String,Object>>> dataSetLists = null;
List<Map<String,Object>> dataSetList = null;
dataSetLists = restTemplate.getForObject(url,HashMap.class );
dataSetList = dataSetLists.get("data");
Map<String, Object> stringStringMap = dataSetList.get(i);
String domainId = (String) stringStringMap.get("domain");
开启负载均衡
RestTemplate开启客户端负载均衡功能,这样可以通过服务名作为url地址,而不在需要具体的服务地址。
会把类似于http://HELLO-SERVICE/hello
这种地址转为类似于http://195.124.207.128/hello
@Bean
@LoadBalanced
RestTemplate restTemplate() {
return new RestTemplate();
}
参考资料
https://www.cnblogs.com/javazhiyin/p/9851775.html
https://blog.csdn.net/u012702547/article/details/77940838