RestTemplate:返回实体列表
RestTemplate: returning a List of Entities
有一个 RestFull 方法 return 菜单对象列表
public ResponseEntity<List<Menu>> getMenus() {
..
}
但我不知道如何从 RestTemplate 获取它们,从 ResponseEntity>
获取 class
ResponseEntity<List<Menu>> response = restTemplate
.exchange("http://127.0.0.1:8080/elcor/api/users/1/menus", HttpMethod.GET, entity, ResponseEntity<List<Menu>>.getClass());
尝试使用 ParameterizedTypeReference
ResponseEntity<List<Menu>> response = restTemplate
.exchange("URI", HttpMethod.GET, entity, new ParameterizedTypeReference<List<Menu>>() {
});
试试这个,它对我有用,可以在 Spring
中使用 RestTemplate 获取对象列表
RestTemplate restTemplate = new RestTemplate();
try {
ResponseEntity<List<Claim>> claimResponse = restTemplate.exchange(
uri,
HttpMethod.GET,
null,
new ParameterizedTypeReference<List<Claim>>() {});
if(claimResponse != null && claimResponse.hasBody()){
claims = claimResponse.getBody();
}
} catch (RestClientException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我一直在尝试想出一些通用的方法来封装此类功能并在我当前的项目中使用它。
我终于找到了如何做到这一点。
public static <T> List<T> getForList(RestTemplate restTemplate, String url, Class<T> cls, Object... uriVariables) {
ObjectMapper mapper = new ObjectMapper();
CollectionType type = mapper.getTypeFactory().constructCollectionType(List.class, cls);
return restTemplate.<List<T>>exchange(url, HttpMethod.GET, null,
ParameterizedTypeReference.forType(type), uriVariables)
.getBody();
}
有一个 RestFull 方法 return 菜单对象列表
public ResponseEntity<List<Menu>> getMenus() {
..
}
但我不知道如何从 RestTemplate 获取它们,从 ResponseEntity>
获取 classResponseEntity<List<Menu>> response = restTemplate
.exchange("http://127.0.0.1:8080/elcor/api/users/1/menus", HttpMethod.GET, entity, ResponseEntity<List<Menu>>.getClass());
尝试使用 ParameterizedTypeReference
ResponseEntity<List<Menu>> response = restTemplate
.exchange("URI", HttpMethod.GET, entity, new ParameterizedTypeReference<List<Menu>>() {
});
试试这个,它对我有用,可以在 Spring
中使用 RestTemplate 获取对象列表 RestTemplate restTemplate = new RestTemplate();
try {
ResponseEntity<List<Claim>> claimResponse = restTemplate.exchange(
uri,
HttpMethod.GET,
null,
new ParameterizedTypeReference<List<Claim>>() {});
if(claimResponse != null && claimResponse.hasBody()){
claims = claimResponse.getBody();
}
} catch (RestClientException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我一直在尝试想出一些通用的方法来封装此类功能并在我当前的项目中使用它。 我终于找到了如何做到这一点。
public static <T> List<T> getForList(RestTemplate restTemplate, String url, Class<T> cls, Object... uriVariables) {
ObjectMapper mapper = new ObjectMapper();
CollectionType type = mapper.getTypeFactory().constructCollectionType(List.class, cls);
return restTemplate.<List<T>>exchange(url, HttpMethod.GET, null,
ParameterizedTypeReference.forType(type), uriVariables)
.getBody();
}