4

我正在使用spring-hateoas:0.18.0.RELEASEspring-boot:1.2.5.RELEASE

为了调用我的 Web 服务并通过HAL链接,我正在使用Traverson 客户端 (受 Traverson JavaScript 库启发的客户端服务遍历 API)

Spring Hateoas Traverson 文档

使用超媒体HateoasRest的新功能

我的问题是我什么时候需要使用PagedResourcesResource

我在这里找到的示例 Traverson 客户端示例

 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()方法时,资源的最佳做法是什么?

4

1 回答 1

5

很简单:PagedResources当您退回大量商品时使用Resource,当您退回单个商品时使用。因此,当返回许多Customer对象时,您可能想要对它们进行分页,并且您会使用PagedResources<Resource<Customer>>. 对于单个客户来说Resource<Customer>

Resource只是包装域对象并为其添加链接。如果您现在不需要链接,并且您知道将来也不需要链接,那么您也可以不使用Resource

PagedResources添加用于选择页码和页面大小的页面元数据。它还允许服务器发送有关页面总数和项目总数的信息。您可以要求分页资源向您发送页面大小为 5 的第 2 页,您将获得第 6、7、8、9 和 10 项。

于 2016-10-18T07:34:49.560 回答