我正在尝试使用 RestTemplate 类使用基于 HAL 的 REST 服务。
响应正文如下所示:
{
"_embedded": {
"school:teachers": [
{
"name": "Adams",
"state": "CA",
"_links": {
"self": {
"href": "http://localhost:8080/api/teachers/1"
}
}
},
{
"name": "Barnes",
"state": "FL",
"_links": {
"self": {
"href": "http://localhost:8080/api/teachers/2"
}
}
},
{
"name": "Armstrong",
"state": "GA",
"_links": {
"self": {
"href": "http://localhost:8080/api/teachers/3"
}
}
}
]
},
"_links": {
"curies": [
{
"href": "http://localhost:8080/docs/html5/{rel}.html",
"name": "school",
"templated": true
}
]
}
}
The Teacher
类看起来像这样:
public class Teacher {
private String name;
private String state;
// getters and setters...
}
GET 方法的 REST 服务的返回类型为ResponseEntity<Resources<Resource<Component>>>
。因此,我在客户端代码中的请求如下所示:
...
RestTemplate restTemplate = new RestTemplate();
Map<String, Object> dummy = new HashMap<>();
HttpEntity<String> httpEntity = getHttpEntity();
ResponseEntity<Resources<Resource<Teacher>>> response = restTemplate.exchange(url,
HttpMethod.GET,
httpEntity,
new ParameterizedTypeReference<Resources<Resource<Teacher>>>() {});
Resources<Resource<Teacher>> resources = response.getBody();
...
当我使用响应类型发出请求时ParameterizedTypeReference
响应内容为空。当我这样做时String
我检索内容列表。
我应该如何执行请求以使用响应类型检索它ParameterizedTypeReference
直接在POJO中映射它?