spring提供了一个模板,可以在java代码里访问restful服务,这就是RestTemplate。我们只需要传入url及返回值类型即可。相较于之前常用的HttpClient,RestTemplate是一种更优雅的调用RESTful服务的方式。
一个例子:
远程调用别的站点的方法
@RestController
public class DeptConsumerController {
// 理解:消费者,不应该有service层~
// RestTemplate .... 供我们直接调用就可以了! 注册到Spring中
// (url, 实体:Map ,Class<T> responseType)
@Autowired
private RestTemplate restTemplate; //说白了,它就是提供多种便捷访问远程http服务的方法,简单的Restful服务模板~
//Ribbon:我们这里的地址,应该是一个变量,通过服务名来访问
//private static final String REST_URL_PREFIX = "http://localhost:8001";
private static final String REST_URL_PREFIX = "http://SPRINGCLOUD-PROVIDER-DEPT";
@RequestMapping("/consumer/dept/add")
public boolean add(Dept dept) {
return restTemplate.postForObject(REST_URL_PREFIX + "/dept/add", dept, Boolean.class);
}
@RequestMapping("/consumer/dept/get/{id}")
public Dept get(@PathVariable("id") Long id) {
//去远程服务器拿
return restTemplate.getForObject(REST_URL_PREFIX + "/dept/get/" + id, Dept.class);
}
@RequestMapping("/consumer/dept/list")
public List<Dept> list() {
return restTemplate.getForObject(REST_URL_PREFIX + "/dept/list", List.class);
}
}