Maison >Java >javaDidacticiel >Introduction à trois utilisations de RestTemplate (code)
Cet article vous apporte une introduction (code) sur les trois façons d'utiliser RestTemplate. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
Préparation
J'utilise une API commune côté serveur
@RestController public class ServerController { @GetMapping("/msg") public String msg(){ return "this is product' msg"; } }
La première façon
Utiliser restTemplate directement, écrire l'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; } }
La deuxième façon (utilisez loadBalancerClient pour obtenir l'URL via le nom de l'application, puis utilisez 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; } }
La troisième méthode (en utilisant @LoadBalanced, vous pouvez utiliser le nom de l'application dans 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; } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!