软件编程
位置:首页>> 软件编程>> java编程>> 详解RestTemplate的三种使用方式

详解RestTemplate的三种使用方式

作者:MySelf  发布时间:2023-06-07 16:30:45 

标签: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
@RestController
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

来源:https://segmentfault.com/a/1190000016796830

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com