【发布时间】:2014-06-07 23:26:13
【问题描述】:
我正在使用 spring-data-rest 将实体公开为(分页)休息资源。一切正常,但是当我通过RestTemplate 请求数据时,我得到了一个无用的 HATEOAS JSON(我没有要求)。 JSON 似乎是 PagedResources。我可以忍受,但 JSON 没有正确转换为对象。里面没有content。
存储库:
@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends PagingAndSortingRepository<Person, Long>
{
List<Person> findByLastName(@Param("name") String name);
}
客户:
public List<Person> getPersons()
{
RestTemplate rt = new RestTemplate();
System.out.println(rt.getForObject(URL, PagedResources.class).getContent().size());
System.out.println(rt.getForObject(URL, PagedResources.class).getLinks().size());
System.out.println(rt.getForObject(URL, PagedResources.class).getMetadata().getTotalElements());
return new ArrayList<Person>(rt.getForObject(URL, PagedResources.class).getContent()); // <-- empty
}
系统输出:
0 // getContent().size()
4 // getLinks().size()
2 // getTotalElements()
卷曲:
C:\...>curl http://localhost:8080/spring-jsf-rest/rest/people
{
"_links" : {
"self" : {
"href" : "http://localhost:8080/spring-jsf-rest/rest/people{?page,size,sort}",
"templated" : true
},
"search" : {
"href" : "http://localhost:8080/spring-jsf-rest/rest/people/search"
}
},
"_embedded" : {
"people" : [ {
"firstName" : "John",
"lastName" : "Rambo",
"_links" : {
"self" : {
"href" : "http://localhost:8080/spring-jsf-rest/rest/people/1"
}
}
}, {
"firstName" : "Chuck",
"lastName" : "Norris",
"_links" : {
"self" : {
"href" : "http://localhost:8080/spring-jsf-rest/rest/people/2"
}
}
} ]
},
"page" : {
"size" : 20,
"totalElements" : 2,
"totalPages" : 1,
"number" : 0
}
}
_embedded 似乎没有正确映射到内容?!
【问题讨论】:
-
展望未来,您可能想重新考虑在这里提问的方式。如果东西对你没用,就不要使用它。请不要声称,如果您明确发出
GET请求,您就没有要求。与计算机一样,您完全得到您所要求的。如果您不指定Accept标头,您将获得默认值,即application/hal+json。一般来说,这种消极的语气不会产生回答的动力。尽管如此,我还是抓紧时间。不客气。 PS:什么是 HATEOAS JSON,顺便说一句? -
@Oliver:我承认,我的语气有点消极。但是那些小障碍会很烦人。当然,我尝试了其他接受标头,但结果始终相同。我不是唯一一个遇到这个问题的人:stackoverflow.com/q/23264044/3563584。我也没有选择使用东西,我必须这样做。
-
Ahhhh 这就是您在客户端解析 _embedded 列表的方式,告诉 RestTemplate 期待其中一个 hatoas 资源类。非常有用,spring-data-rest 文档在客户端相当稀疏
标签: json spring rest spring-data spring-data-rest