問題タブ [spring-data-rest]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Spring HATEOAS を使用した部分応答のベスト プラクティス
特定のリソース (たとえば、/people/4
) に対するリクエストが、リクエストを実行するユーザーに応じて異なるレベルの詳細を返すマルチユーザー アプリケーションを作成しています (たとえば、ユーザー 4 またはサポート担当者はリソース全体を表示し、他のユーザーはリソース全体を表示します)。ユーザーの電子メール アドレスなどの特定のフィールドは表示されません)。
Spring HATEOAS はリンクの構築を完全にサポートしていますが、メインResourceAssember
インターフェースは、ドメイン オブジェクトを取得してリソース オブジェクトを返す単一のアダプター メソッドのみを提供し、追加のパラメーター (現在の Spring Security ユーザーなど) を提供せず、提供ResourceSupport
もResource<T>
提供もしません。返されたフィールドをフィルタリングする機能。
私が現在傾いているアプローチは、for の実装toResource
をResourceAssembler<Customer, CustomerResource>
手動で現在の Spring Security 資格情報を掘り出し、その時点でフィルタリングを適用することです。基本的には、パブリック フィールドを追加し、次に for-friend フィールドを追加するマルチステージ コピー コンストラクターを手書きします。 、次にプライベート フィールドをリソース オブジェクトに渡します。
タスクを処理するためのより統合された、特に宣言的な方法はありますか?それとも、これが現在利用可能な最良のソリューションですか? このアプローチは Spring Data REST コントローラーと統合されますか? それとも、アセンブリを自分で処理したい場合、ページングなどを再実装する必要がありますか?
spring-data-rest - Spring Data REST の 2.0.0.RC1 以降、認識されないフィールド「_links」
一方では、spring-data-rest-webmc のバージョンをサーバーの最新の 2.0.0.RC1 バージョンに更新しました。このバージョンでは、json 形式が HAL 形式に変更されます。
反対側には、0.9.0.RELEASE バージョンの spring-hateoas ライブラリを使用するクライアントがあります。このクライアントでは、次のように RestTemplate を使用してサーバーからリソースを取得します。
AuthorResource クラスは ResourceSupport を拡張します。
今、私はこのエラーがあります:
この新しい形式をサポートするようにクライアントを構成するにはどうすればよいですか? 私は試します
@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)
しかし、うまくいきません。
ありがとうございます。
xml - XML を使用して Spring Data REST を構成して有効にする方法は?
私は古い学校だと思いますが、JavaConfig よりも XML 構成を好みます。
Maven と XML Spring 構成ファイルのみを使用して Spring Data REST を正しく構成するにはどうすればよいですか?
Postgres、Hibernate、Spring Data JPA リポジトリ、および Spring MVC コントローラーを使用して、単純なアプリを稼働させています。
java - spring-data-rest、結合テーブルとの多対多関係
結合エンティティ (追加のデータ列を含む) を使用する多対多の関係を公開することは可能ですか? 以下は私のエンティティです。
「購入」を REST で表示しようとしています。動作中の REST マッピングの例として「製品」を入れました。
したがって、REST 呼び出しを送信すると、
[http://localhost:8080/webapp/users/1 を取得]
[http://localhost:8080/webapp/users/1/products] のリンクを返しますが、[http://localhost:8080/webapp/users/1/purchases] のリンクは返しません。
spring - spring-data-rest-webmvc と競合する JSP ページの解像度を表示しますか?
アプリケーションの構成方法について壁にぶつかっています。目標は、同じ Tomcat サーバー上で以下を実行できるようにすることです。
- 完全な安らかなサービス (つまり、ハイパーメディア レイヤー、したがって application/hal+json 形式を返す)
- 昔ながらの方法でのレスト サービス サービス (コントローラー アクセス)
- Web ページ配信用の従来のコントローラー セット
環境は次のとおりです。
リポジトリ:
残りのコントローラー:
「ウェブ」コントローラー:
JPA構成(簡単にするために、jpaデータソースの宣言を入れました...)
WebMvc の構成:
}
リポジトリの構成:
初期化設定:
Web ルート コンテキストが「sr」に設定されていることに注意してください。
Tomcat サーバーが起動すると、マッピングが行われていることがはっきりとわかります。
いいもの:
xlocalhostx:8080/sr (sr はルート Web コンテキスト) でサーバーにアクセスすると、次のようにハイパーメディア方式で安静サービスのリストを取得します。
{ "_links" : { "userss" : { "href" : "
http://xlocalhostx:8080
/sr/u" } } }サーバーに
xlocalhostx:8080/sr/users
アクセスすると、期待どおりに次のようになります。
[{"id":1,"name":"Clark","lastname":"Kent"},{"id":2,"name":"Lois","lastname":"Lane"}]
次のテストを実行すると、合格します。
悪い 点 - xlocalhostx:8080/sr/ web/homeでサーバーにアクセスすると、ビュー解決プロセスが間違ったパスを使用してビューを返そうとしているため、404 が返されます。(私の home.jsp はもちろん、ビュー フォルダーの下の WEB-INF フォルダーの下にあります。ログ トレースがあるため、HomeController がヒットしていることがはっきりとわかります。
サーバーから返されるのは次のとおりです。
404 のメッセージ: /sr/WEB-INF/viewshome.jsp 要求されたリソースは利用できません。ご覧のとおり、パスがまったく正しくありません。ルート Web コンテキスト ("sr") が前にあり、home.jsp ファイルの前にスラッシュがありません。
どんなアイデアでも大歓迎です。
ありがとう。
spring-data - findAll() Spring Data Gemfire リポジトリ クエリをオーバーライドする
GemFire リージョンには何百万ものオブジェクトが配置されています。findAll()
何百万ものオブジェクトを一度に取得するために、デフォルトの SDR クエリを実行したくありません。デフォルトの findAll クエリをオーバーライドし、LIMIT パラメータを指定して GemFire リージョンから取得されるオブジェクトの数を制限する方法があるかどうかを調べようとしています。これが私がやりたいことの例です:
現在、Spring Data Gemfire 1.4.0.BUILD-SNAPSHOT および Spring Data REST 2.0.0.BUILD-SNAPSHOT バージョンを使用しています。
java - spring-data-rest、リンクの代わりに(またはリンクとともに)エンティティの完全な詳細を提供できますか
リンクの代わりに、結合されたエンティティの完全な詳細を返す方法はありますか? 以下の例では、製品の詳細も返したいと考えています。100 件の購入リストがある場合、製品の詳細を取得するために 100 回の呼び出しを行う必要がなくなります。
Product、User、および Purchase エンティティのリポジトリはすべて spring-data-jpa を使用して作成されます
エンティティとリポジトリ。
spring - spring-data-rest でバリデーターを使用すると、400 ではなく http 500 が返されます
spring-data-rest の検証を機能させようとしています。ドキュメントから、バリデーターを利用可能にするだけで済み、それを機能させることができましたが、検証制約が正常にキャッチ/処理されると、スタック トレースを含む 500 エラー ページが表示されます。
config クラス、RepositoryRestMvcConfiguration には、検証エラーが 500 ではなく 400 として返されるように見える validationExceptionHandler があります。これは、遅延ロードされた Bean でもあります。
設定が間違っていませんか? または、spring-data-rest が 500 ではなく 400 を返すようにする別の方法はありますか?
spring-data-rest バージョン 2.0.0 リリースを使用しています
tomcat が返すスタック トレース:
アカウント エンティティ:
RestMvcConfig: