web-dev-qa-db-ja.com

HATEOASなしのSpringData Rest

Spring Data Restが作成するすべての定型コードが本当に好きですが、「通常の」コードだけが必要ですか? RESTすべてのHATEOASのものがないサーバー。主な理由は、クライアント側でDojo Toolkitを使用し、そのウィジェットとストアはすべて、返されるjsonがストレートになるように設定されているためです。アイテムの配列、すべてのリンクなどはありません。これをJava configで構成して、すべてのMVCコードを取得できるようにする方法を知っている人はいますが、HATEOASのものはすべてありません。 ?

18
Matt

オリバーのコメント(私は同意します)を読んだ後でも、春のブーツからHATEOASを削除したいと考えています。

Mainメソッドを含むクラスの宣言の上にこれを追加します。

@SpringBootApplication(exclude = RepositoryRestMvcAutoConfiguration.class)

コメントでZackが指摘しているように、必要なRESTメソッド(findAll、save、findByIdなど)を公開するコントローラーも作成する必要があります。

5
Megadec

したがって、RESTを構成するものなしでREST?:)設計が不十分なクライアントライブラリを満たすためにRESTfulサーバーを変更(読み取り:ダムダウン)しようとするのは、始めるのに悪いスタートだと思います。と。しかし、この種のツールにハイパーメディア要素が必要な理由は次のとおりです(おそらくおなじみの 一般的な理由 以外に)。

ドメインオブジェクトをWebに公開することは、ほとんどのRESTコミュニティによって常に批判的に見られてきました。主に、ドメインオブジェクトの境界は、必ずしもリソースに与えたい境界ではないためです。ただし、足場機能を提供するフレームワーク(Rails、Grailsなど)はここ数年で非常に人気があります。したがって、Spring Data RESTはそのスペースに対処しようとしていますが、同時に安らぎの面で良い市民。

したがって、最初にプレーンなデータモデル(多くの関係がないオブジェクト)から始めて、それらを読みたいだけの場合、実際にはSpring DataRESTのようなものは必要ありません。作成する必要のあるSpringコントローラーは、SpringDataリポジトリーの上に約10行のコードです。物事がより困難になると、ストーリーはより興味深いものになります。

  • URIをハードコーディングせずにクライアントを作成するにはどうすればよいですか(作成したとしても、特に安らかではありませんでした)。
  • リソース間の関係をどのように処理しますか?クライアントにそれらを作成、更新させるにはどうすればよいですか?
  • クライアントはどのクエリリソースが利用可能かをどのように発見しますか?渡すパラメータなどをどのように見つけますか?

これらの質問に対するあなたの答えが「私のクライアントはそれを必要としない/それを行うことができない」である場合、Spring Data RESTはおそらく最初から間違ったライブラリです。基本的に構築はJSONover HTTPですが、それでは本当に安らかなことは何もありません。これは目的にかなうのであればまったく問題ありませんが、明確な設計制約のあるライブラリを、これらの設計を正確に無視したい任意の異なるもの(明らかに類似しているもの)にシューホーニングしますアスペクトはそもそも間違ったアプローチです。

7
Oliver Drotbohm