Spring HATEOAS 提供了方便ControllerLinkBuilder
地创建到控制器方法的链接,这些链接将作为返回给客户端的 JSON/XML 中的 href 添加。例如:
resource.add(linkTo(methodOn(FooController.class)
.findFoo(entity.getClient().getId()))
.withRel("show"));
...可能会生成 JSON 有点像:
{
"name":"foo",
"links":[
{"rel":"show","href":"http://111.11.11.111:28080/foos/1"}
]
}
然而...
我倾向于通过反向代理访问我的服务。我想大多数人可能会。这让我可以在不同的端口上运行多个服务,但让我可以通过相同的基本 URL 访问它们。不幸的是,通过代理访问意味着 Spring HATEOAS 生成的 URL 不是对访问资源有效的 URL。
现在我可以对链接进行硬编码,但这相当脆弱。根据ControllerLinkBuilder
我的控制器配置生成 URL 对我@RequestMapping
来说很有价值,因为它避免了我的链接与现实不同步的风险。
所以我想知道是否有一个属性可以用来强制主机和端口值。我正在使用 Spring Boot,因此理想情况下我可以application.properties
在每个环境中添加到文件中的属性。
笔记:
由于这个问题似乎是由 Spring 中的错误引起的,我应该指出我使用的是 Spring Boot 1.0.2.RELEASE。