我使用 spring-hateoas:0.18.0.RELEASE 与 spring-boot:1.2.5.RELEASE
要使用 Traverson客户端 (客户端的API)调用我的Web服务并浏览 HAL 链接受Traverson JavaScript库启发的服务遍历)
Spring Hateoas Traverson Documentation
使用超媒体和 HateoasRest
的新功能我的问题是我何时需要使用 PagedResources 和 资源 ?
我在这里找到的示例Traverson Client examples:
final PagedResources<Resource<Customer>> resources = traverson
.follow("customers","search","findByFirstName")
.withTemplateParameters(parameters)
.toObject(new TypeReferences.PagedResourcesType<Resource<Customer>>(){});
我写的代码是:
ParameterizedTypeReference<Resource<ProjectJSON>> resourceParameterizedTypeReference = new
ParameterizedTypeReference<Resource<ProjectJSON>>() {};
Resource<ProjectJSON> projectJSONResource = traverson
.follow("projects")
.follow("$._embedded.projects[0]._links.self.href")
.toObject(resourceParameterizedTypeReference);
我知道它不是一回事,但在调用 Traverson.toObject() 方法时,资源的最佳做法是什么?
答案 0 :(得分:3)
这很简单:当您返回大量项目时使用PagedResources
,而当您返回单个项目时使用Resource
。因此,当返回许多Customer
个对象时,您可能想要对它们进行分页,并且您将使用PagedResources<Resource<Customer>>
。对于单个客户,它是Resource<Customer>
。
Resource
只包装域对象并添加链接。如果您现在不需要链接,并且您知道将来也不需要链接,那么您也可以不使用Resource
。
PagedResources
添加页面元数据以选择页码和页面大小。它还允许服务器发送有关总页数和项目总数的信息。您可以要求分页资源向您发送页面大小为5的第2页,您将获得第6,7,8,9和10项。