Spring HATEOAS 与 Traverson
Spring HATEOAS with Traverson
我正在使用 spring-hateoas:0.18.0.RELEASE 和 spring-boot:1.2。 5.RELEASE
为了调用我的 Web 服务并通过 HAL 链接,我正在使用 Traverson Client (API 受 Traverson JavaScript 库启发的客户端服务遍历)
Spring Hateoas Traverson Documentation
它是用于 Hypermedia 和 HateoasRest
的新功能
我的问题是什么时候需要使用PagedResources和Resource?
我在这里找到的示例 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() 时资源的最佳实践是什么方法?
很简单:退回大量商品时使用 PagedResources
,退回单个商品时使用 Resource
。因此,当返回许多 Customer
个对象时,您可能希望对它们进行分页,并且您会使用 PagedResources<Resource<Customer>>
。对于单个客户,它将是 Resource<Customer>
。
Resource
只是包装域对象并向其添加链接。如果您现在不需要链接,并且您知道将来也不需要链接,那么您也可以不使用 Resource
。
PagedResources
添加了用于选择页码和页面大小的页面元数据。它还允许服务器发送有关页面总数和项目总数的信息。您可以请求分页资源向您发送页面大小为 5 的第 2 页,您将获得第 6、7、8、9 和 10 项。
我正在使用 spring-hateoas:0.18.0.RELEASE 和 spring-boot:1.2。 5.RELEASE
为了调用我的 Web 服务并通过 HAL 链接,我正在使用 Traverson Client (API 受 Traverson JavaScript 库启发的客户端服务遍历)
Spring Hateoas Traverson Documentation
它是用于 Hypermedia 和 HateoasRest
的新功能我的问题是什么时候需要使用PagedResources和Resource?
我在这里找到的示例 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() 时资源的最佳实践是什么方法?
很简单:退回大量商品时使用 PagedResources
,退回单个商品时使用 Resource
。因此,当返回许多 Customer
个对象时,您可能希望对它们进行分页,并且您会使用 PagedResources<Resource<Customer>>
。对于单个客户,它将是 Resource<Customer>
。
Resource
只是包装域对象并向其添加链接。如果您现在不需要链接,并且您知道将来也不需要链接,那么您也可以不使用 Resource
。
PagedResources
添加了用于选择页码和页面大小的页面元数据。它还允许服务器发送有关页面总数和项目总数的信息。您可以请求分页资源向您发送页面大小为 5 的第 2 页,您将获得第 6、7、8、9 和 10 项。