springcloud 学习(二)Rest 通信测试
微服务之间的通信 dubbo采用的是rpc
springcloud 则采用http
首先构建一个服务模块,并提供对应的请求接口,如下:
提供三个请求接口
@PostMapping("/api/add")
public boolean addApi(api api){
return apiService.addApi(api);
}
@GetMapping("/api/get/{id}")
public api getApiId(@PathVariable int id){
return apiService.getApiByID(id);
}
@RequestMapping("/api/list")
public List<api> addApi(){
return apiService.getApi();
}
再构建一个服务模块,调用上面那些接口
springboot提供了RestTemple类,这个类用于http的请求,提供了较多的方法,可以是get,post等请求,
方法可以携带三个参数,分别是请求连接,携带的参数(可以省略),返回的结果类型
首先注册该类,如下:
@Configuration
public class rest_confige {
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
调用另外模块的接口代码如下:
restTemplate.xxxForObject 方法,三个参数,url路径,参数(可以省略),返回值类型
相当于调用另外一个服务的controller层 方法的@RequestMapping注解的里的请求路径
private static final String url = "http://localhost:8001/";
@Autowired
RestTemplate restTemplate;
@RequestMapping("/con/add")
public boolean add(api api){
System.out.println(api);
return restTemplate.postForObject(url+"/api/add",api,Boolean.class);
}
@RequestMapping("/con/get/{id}" )
public api get(@PathVariable int id){
return restTemplate.getForObject(url+"/api/get/"+id,api.class);
}
@RequestMapping("/con/list")
public List<api> getAll(){
return restTemplate.getForObject(url+"/api/list/",List.class);
}

浙公网安备 33010602011771号