--用法1
RestTemplate template = new RestTemplate();
//get请求
String response = Template.getForObject(“url”,String.class); //String.class为返回值的类型
//post请求
String response = Template.postForObject(“url”,Object param,String.class); //String.class为返回值的类型
缺点:请求地址写死了,扩展性较差,且在集群环境中无法做到负载均衡。
--用法2
使用SpringCloud提供的LoadBanlenceClient.基于用法1
@Resource
private LoadBanlenceClient loadBanlence; //注入LoadBanlenceClient对象
ServerInstance instance = loadBanlence. //通过loadBanlenceClient获取一个服务实例(针对集群环境,解决了用法1的缺点)
String host = instance.getHost(); //通过实例获取主机ip
String port = instance.getPort(); //获取端口
====接下来就结合用法1来实现====
String url = String.format("http://%s:%s/uri",host,port);//通过ip和端口构造url,uri为你需要调用的服务uri
String response = restemplate.getForObject("url",String.class);
终极写法
写一个restemplate的配置
@Configure
public RestTemplateConfig{
@Bean
@LoadBanlence
public RestTemplate getTemplate(){
return new RestTemplate();
}
}
直接注入RestTemplate即可
--用法:接口加注解
@Feign("服务名称")
public interface Client{
@GetMapping("/getUserInfo")//对应目标接口的请求方式和映射路径
String getUserInfo(@RequestParam("id") String id);//String 为目标接口的返回值类型,getUserInfo名称任意,id为目标接口需要的参数
}