REST API を構築しています。ResourceSupport を拡張できない Bean で構成されるドメイン モデルがあります。Spring-HATEOAS を使用してそれらをリソースとして公開する最良の方法はどれですか?
それが不可能な場合、Bean によって生成された JSON にリンクを含める最良の方法はどれですか?
REST API を構築しています。ResourceSupport を拡張できない Bean で構成されるドメイン モデルがあります。Spring-HATEOAS を使用してそれらをリソースとして公開する最良の方法はどれですか?
それが不可能な場合、Bean によって生成された JSON にリンクを含める最良の方法はどれですか?
Resource
ラッパーを使用できます:
MyModel model = ...
Resource<MyModel> resource = new Resource(model);
resource.add(linkTo(...
リソースをドメインから分離する必要があります。
似ているように見えても、ドメイン モデルとリソースは大きく異なります。
ドメイン オブジェクトは内部表現です。実装には、ビジネス ロジック/永続性の実装方法やその他の設計上の決定に応じた制約があります。たとえば、それらは JPA エンティティである場合や、不変である場合があります。
リソースは外界への表現です。ドメインと 1 対 1 の場合もあれば、まったく異なる場合もあります。単一のドメイン エンティティに対して複数のリソース表現を持つことは、それほど珍しくありません。
しかしまず第一に、 Resource 実装はネットワーク上で送受信されることを意図しています。そのため、マーシャリング/アンマーシャリングの制約があります。
そのため、アプリケーションにはドメインとリソース用に個別のオブジェクトが必要です。Spring HATEOAS では、リソース アセンブラを使用してマッピングが行われます。
次のサンプル アプリケーションをご覧ください: https://github.com/opencredo/spring-hateoas-sampleおよび関連記事: Spring HATEOAS を使用した HAL ハイパーメディア REST API の実装