詳解RestTemplate的三種使用方式
什么是RestTemplate
傳統(tǒng)情況下在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項目
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Spring學習筆記之RestTemplate使用小結(jié)
- springMVC中RestTemplate傳值接值方法
- RestTemplate集成Ribbbon的示例代碼
- Spring Boot使用RestTemplate消費REST服務的幾個問題記錄
- Spring cloud restTemplate 傳遞復雜參數(shù)的方式(多個對象)
- Spring使用RestTemplate模擬form提交示例
- Spring Boot RestTemplate提交表單數(shù)據(jù)的三種方法
- 詳解SpringBoot通過restTemplate實現(xiàn)消費服務
- 基于RestTemplate的使用方法(詳解)
相關文章
SpringBoot+Vue.js實現(xiàn)前后端分離的文件上傳功能
這篇文章主要介紹了SpringBoot+Vue.js實現(xiàn)前后端分離的文件上傳功能,需要的朋友可以參考下2018-06-06
詳解SpringBoot開發(fā)案例之整合Dubbo分布式服務
這篇文章主要介紹了詳解SpringBoot開發(fā)案例之整合Dubbo分布式服務,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10
java long轉(zhuǎn)String +Codeforces110A案例
這篇文章主要介紹了java long轉(zhuǎn)String +Codeforces110A案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
SpringBoot實現(xiàn)自定義條件注解的代碼示例
在Spring Boot中,條件注解是一種非常強大的工具,它可以根據(jù)特定的條件來選擇是否加載某個類或某個Bean,文將介紹如何在Spring Boot中實現(xiàn)自定義條件注解,并提供一個示例代碼,需要的朋友可以參考下2023-06-06
使用PageHelper插件實現(xiàn)Service層分頁
這篇文章主要為大家詳細介紹了使用PageHelper插件實現(xiàn)Service層分頁,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04

