在RestTemplate中,對GET請求有以下兩種方法
第一種是getForEntiy函數(shù)沼侣,返回的是ResponseEntity
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> responseEntity = restTemplate.getForEntity("http://service/user?name={1}", String.class, "username");
String body = responseEntity.getBody();
如果希望返回的body是個User對象溅固,也可以這樣實現(xiàn):
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<User> responseEntity = restTemplate.getForEntity("http://service/user?name={1}", User.class, "username");
User body = responseEntity.getBody();
getForEntiy函數(shù)共三種重載:
getForEntity(String url, Class responseType, Object... urlVariables), 就是上面的這種方式
getForEntity(String url, Class responseType, Map urlVariables)
RestTemplate restTemplate = new RestTemplate();
Map<String, String> params = new HashMap<>();
params.put("name", "username");
ResponseEntity<String> responseEntity = restTemplate.getForEntity("http://service/user?name={name}", String.class, params);
注意map的key要和參數(shù)中占位符相同
- getForEntity(URI uri, Class responseType)
RestTemplate restTemplate = new RestTemplate();
UriComponents uriConponents = UriComponentsBuilder.fromUriString("http://service/user?name={name}").build().expand("username").encode();
URI uri = uriConponents.toUri();
ResponseEntity<String> responseEntity = restTemplate.getForEntity(uri, String.class);
第二種是getForObject函數(shù)遇伞, 可以看作是對getForEntity進一步封裝
RestTemplate restTemplate = new RestTemplate();
//注意參數(shù)中是uri不是url
String body = restTemplate.getForObject(uri, String.class);
返回User對象:
RestTemplate restTemplate = new RestTemplate();
User body = restTemplate.getForObject(uri, User.class);
該方法也是三種重載參照getForEntity
此外字旭,RestTemplate的POST方法也分為postForEntity和postForObject然想,各有三種重載莺奔,使用方法和GET方法基本一一對應(yīng)