Existe um meio de definir o host e a porta do Spring HATEOAS `ControllerLinkBuilder`?
A primavera HATEOAS fornece as práticasControllerLinkBuilder
para criar links para métodos do controlador, que serão adicionados como hrefs no JSON / XML retornado a um cliente. Por exemplo:
resource.add(linkTo(methodOn(FooController.class)
.findFoo(entity.getClient().getId()))
.withRel("show"));
... pode gerar JSON um pouco como:
{
"name":"foo",
"links":[
{"rel":"show","href":"http://111.11.11.111:28080/foos/1"}
]
}
Contudo...
Costumo acessar meus serviços através de um proxy reverso. O que eu acho que a maioria das pessoas provavelmente faria. Isso me permite ter vários serviços em execução em portas diferentes, mas permite acessá-los através do mesmo URL base. Infelizmente, acessar por meio de um proxy significa que o URL que está sendo gerado pelo Spring HATEOAS não é um URL válido para acessar o recurso.
Agora eu poderia apenas codificar os links, mas isso é bastante frágil. Tendo oControllerLinkBuilder
gerar URLs com base no meu controlador@RequestMapping
a configuração é valiosa para mim, pois evita o risco de meus links ficarem fora de sincronia com a realidade.
Então, eu queria saber se há uma propriedade em algum lugar que eu poderia usar para forçar os valores de host e porta. Estou usando o Spring Boot, de modo ideal uma propriedade que eu poderia adicionar aoapplication.properties
arquivo em cada ambiente.
Nota:
Como esse problema parece ter sido causado por um bug no Spring, eu provavelmente deveria apontar que estou usando o Spring Boot 1.0.2.RELEASE.