SprirngBoot微服务之间的交互—— restTemplate
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SprirngBoot微服务之间的交互—— restTemplate相关的知识,希望对你有一定的参考价值。
步骤:
1 在utils创建需被调用的接口
@RestController
@RequestMapping("/api")
public class CheckIPResource {
@PostMapping("/checkip")
public String checkIP(@RequestBody TestEntity testEntity) {
//处理数据
// 返回结果
return "404";
}
}
2 在storage的主类里创建restTemplate
位置: com.ejtone.ejt1.StorageApp
?
public class StorageApp {
@Bean
@LoadBalanced
RestTemplate restTemplate(){ return new RestTemplate(); }
}
3 在storage需要调用utils接口的地方去调用
public class CheckIpService {
?
@Autowired
private RestTemplate restTemplate;
public void testFrom(TestEntity testEntity){
// postForObject 请求方式:post 常用的请求方式还有get,具体见下方第二点
// http://utils/api/checkip utils:是utils微服务向eureka server注册时的名称,后接具体位置
// new HttpEntity<>(testEntity) 请求体 --可带请求头,具体见下方第三点
//String.class 请求响应返回后的数据的类型
restTemplate.postForObject("http://utils/api/checkip",
new HttpEntity<>(testEntity),
String.class);
}
}
二 请求方式除了上面使用的post之外,还有getForObject:
// 参数url是http请求的地址 // Class responseType 请求响应返回后的数据的类型 // String... urlVariables 请求中需要设置的参数 RestTemplate.getForObject(String url, Class responseType, String... urlVariables) ? 例如下方,url上带着一个参数{id},最后执行该方法会返回一个String类型的结果,后面的id是请求的一个具体变量。 template.getForObject(url + "get/{id}", String.class, id);
三 HttpEntity<>(请求体,请求头)
public class ParService {
@Autowired
private RestTemplate restTemplate;
public Par setPar(TxtFileVM txtFileVM, HttpServletRequest request) {
//创建一个请求头
HttpHeaders headers = new HttpHeaders();
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String key = (String) headerNames.nextElement();
String value = request.getHeader(key);
headers.add(key, value);
}
txtPath = restTemplate.postForObject("http://storage/api/create/txtfile",
new HttpEntity<>(txtFileVM,headers),
String.class);
}
以上是关于SprirngBoot微服务之间的交互—— restTemplate的主要内容,如果未能解决你的问题,请参考以下文章