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);
    }

 

posted @ 2021-09-21 14:57  黄易安  阅读(132)  评论(0)    收藏  举报