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 を使用していることを指摘しておく必要があります。