详解RestTemplate的三种使用方式

网友投稿 313 2023-01-20


详解RestTemplate的三种使用方式

什么是RestTemplate

传统情况下在java代码里访问restful服务,一般使用Apache的HttpClient。不过此种方法使用起来太过繁琐。spring提供了一种简单便捷的模板类来进行操作,这就是RestTemplate。

准备

服务端我是用的是一个普通的API

@RestController

public class ServerController {

@GetMapping("/msg")

public String msg(){

return "this is product' msg";

}

}

第一种方式

直接使用restTemplate,url写死

@Slf4j

@RestController

public class ClientController {

@GetMapping("/getProductMsg")

public String getProductMsg(){

// 1、第一种方式(直接使用restTemplate,url写死)

RestTemplate restTemplate = new RestTemplate();

String response = restTemplate.getForObject("http://localhost:9082/msg",String.class);

log.info("response={}",response);

return response;

}

}

第二种方式

第二种方式(利用loadBalancerClient通过应用名获取url,然后再使用restTemplate)

@Slf4j

@RestContrhttp://oller

public class ClientController {

@Autowired

private LoadBalancerClient loadBalancerClient;

@GetMapping("/getProductMsg")

public String getProductMsg(){

//2、第二种方式(利用loadBalancerClient通过应用名获取url,然后再使用restTemplate)

ServiceInstance serviceInstance = loadBalancerClient.choose("PRODUCT");

String url = String.format("http://%s:%s",serviceInstance.getHost(),serviceInstance.getPort()) + "/msg";

RestTemplate restTemplate = new RestTemplate();

String response = restTemplate.getForObject(url,String.class);

log.info("response={}",response);

return response;

}

}

第三种方式

第三种方式(利用@LoadBalanced,可再restTemplate里使用应用名字)

@Component

public class RestTemplateConfig {

@Bean

@LoadBalanced

public RestTemplate restTemplate(){

return new RestTemplate();

}

}

@Slf4j

@RestController

public class ClientController {

@Autowired

private RestTemplate restTemplate;

@GetMapping("/getProductMsg")

public String getProductMsg(){

//3、第三种方式(利用@LoadBalanced,可再restTemplate里使用应用名字)

String response = restTemplate.getForObject("http://PRODUCT/msg",String.class);

log.info("response={}",response);

return response;

}

}

github项目

Cloud2Sell


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:详解IDEA多module项目maven依赖的一些说明
下一篇:Java实现多项式乘法代码实例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~