我想链接到具有以下签名的方法:
public SomeResponse getSomeObjects(@RequestParam(value = "foo", defaultValue = "bar") Foo fooValue)
现在我希望链接看起来像这样:
http://myhost/api/someobjects
我尝试使用Spring HATEOAS methodOn
中的ControllerLinkBuilder
,如下所示:
discoverResponse.add(linkTo(methodOn(SomeController.class).getSomeObjects(null)).withRel("someobjects"))
但它不会导致所需的链接,因为在其末尾添加了?foo
。我怎样才能达到上述目标?
答案 0 :(得分:1)
由于向后兼容性对您来说是个问题,您可以随时手动构建Link对象,如下所示:
discoverResponse.add(new Link(baseUri() + "/someobjects", "someobjects"));
另一种选择是在GitHub上分叉Spring HATEOAS,自己构建项目,并改变ControllerLinkBuilder
中处理默认值的方式。我真的不知道你如何期望一个脱离上下文的链接构建器能够区分它是否应该通告一个可选参数。在HATEOAS世界中,如果未包含该参数,则客户端不知道该参数。那么为什么甚至有可选参数?