93

Spring をRESTで使用する方法のさまざまな例を見てきました。私たちの最終目標は春のHATEOAS/HALセットアップです

Spring内でRESTをレンダリングするための 2 つの異なる方法を見てきました

  1. @RestControllerコントローラー内経由

  2. @RepositoryRestResourceリポジトリ内経由

私が見つけるのに苦労しているのは、なぜ一方を他方に使用するのかということです。実装しようとするとき、HALどれが最適ですか?

データベースのバックエンドはNeo4jです。

4

4 に答える 4

68

わかりました、短い話は、 Spring JPAでHATEOASサービスを@RepositoryRestResource作成するため、 を使用したいということです。

ここでわかるように、このアノテーションを追加して Pojo にリンクすると、リポジトリ メソッドや REST サービス メソッドを実装しなくても、完全に機能するHATEOASサービスが得られます。

を追加する場合は、公開する各メソッドを独自に実装する必要があり、これをHATEOAS形式@RestControllerにエクスポートしません。

于 2014-04-20T13:46:14.660 に答える
40

エンティティ固有のアクションを実行しているかどうかに応じて、@BasePathAwareController または @RepositoryRestController のいずれかを使用する、概説していない 3 番目 (および 4 番目) のオプションがあります。

@RepositoryRestResource は、パブリック リポジトリ インターフェイスでオプションを設定するために使用されます。拡張されるリポジトリのタイプ (つまり、CrudRepository/PagingAndSortingRepository/etc) に基づいて、適切なエンドポイントが自動的に作成されます。

@BasePathAwareController と @RepositoryRestController は、手動でエンドポイントを作成したいが、セットアップした Spring Data REST 構成を使用したい場合に使用されます。

@RestController を使用する場合、異なる構成オプション (異なるメッセージ コンバーター、異なるエラー ハンドラーなど) を持つエンドポイントの並列セットを作成しますが、それらは問題なく共存します (おそらく混乱の原因になります)。

具体的なドキュメントはここにあります。

于 2015-11-10T18:23:10.253 に答える