如何在使用模型属性时构建HATEOAS链接?

时间:2017-10-17 14:36:23

标签: java spring-mvc spring-boot spring-hateoas

我有一个@RestController生成application/hal+json的{​​{1}}。通常情况下,我会返回Resource LinkControllerLinkBuilder创建的@RequestParam。当我将@GetMapping("objects") Resource<?> fetchObjects(@Validated Query query) { ... return new Resource(..., linkTo(methodOn(getClass()).fetchObjects(query)); } 用于逐个传递给映射方法的所有查询参数时,这非常有效。

对于具有多个过滤选项的搜索端点,我创建了一个包含所有选项作为属性的POJO,Spring会自动将所有匹配的查询参数放入该对象中。如果需要,我甚至可以对该对象进行bean验证:

private Link createQueryLink(Query query) {
   UriComponentsBuilder link = linkTo(methodOn(getClass()).fetchObjects(query))
    .toUriComponentsBuilder();
  Optional.ofNullable(query.getFoo()).ifPresent(foo -> link.queryParam("foo", foo));
  ...
  return new Link(link.build().toUriString(), Link.REL_SELF);
}

但链接构建器不执行反向映射,因此不会添加任何查询参数。

是否有任何优雅的方式,而不是由签名中的所有成员替换查询对象?到目前为止,我找到的唯一方法是(从我的观点来看有点笨拙):

$statement->getWrappedStatement()->nextRowset();
$newIDNum = $statement->fetchAll();

PS:我使用的是Spring Boot 1.5.7.RELEASE

0 个答案:

没有答案