問題タブ [spring-hateoas]
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 - Java: コンパイルの競合: 戻り値の型は HATEOAS ResourceSupport.getId と互換性がありません
だから私はこのHATEOASエンティティを持っています。
私のエンティティには long 型の ID がありますが、HATEOAS の ResourceSupport では getId が Link を返す必要があります。
データベースには長い ID があり、永続化されたエンティティであるため、エンティティには長い ID があります。このエンティティを HATEOAS で実装するにはどうすればよいですか?
spring - Spring HATEOAS: リソース サービスを宣伝するには?
次のような特定のリソースにアクセスするためにSpring HATEOASが機能しています
しかし、サービスの URL をアドバタイズできるようにしたい:
たとえば、GET / を実行すると、アドバタイズしたサービス リソースが返されます。現在、唯一のものは /auth です。
linkTo は void 引数を取らないため、現在これはコンパイルされていません。これは、認証メソッドの戻り値の型であると推測されます。
私が欲しいのはこれです:
HATEOAS のベスト プラクティスの範囲内でこれを達成するにはどうすればよいですか?
java - 春のhateoasで@EnableHypermediaSupportを使用せずにHALレンダリングを有効にする方法は?
Spring を使用@EnableHypermediaSupport(type = HypermediaType.HAL)
すると、hateoas は HAL レンダリングを有効にする簡単で便利な方法を提供します。
注釈は、ここで説明されているいくつかの構成マジックをトリガーします: https://github.com/spring-projects/spring-hateoas#enablehypermediasupport
ただし、特定の xml-config ベースの Spring アプリケーションで作業している場合、@EnableHypermediaSupport を統合するのは簡単ではありません。HAL レンダリングを有効にするためにさまざまな方法を試しましたが、正しく機能するソリューションは 1 つもありませんでした。
- 既存の mvc サーブレット xml 構成に構成クラスを含めます。
- jiraの問題によると、それがデフォルトになるはずなので、0.90.0が箱から出してすぐにHALを生成することを期待して、Spring Hateoの異なるバージョン(0.70.0、0.80.0、0.9.0.BUILD-SNAPSHOT)を使用しますレンダリング(少なくとも春のデータレスト用)。
- カスタム
MappingJackson2HttpMessageConverter
を使用して を登録してnew Jackson2HalModule()
も機能しませんでした。コンバーターはレンダリング (日付のレンダリングなど) に使用されましたが、出力は HAL でレンダリングされませんでした。
したがって、私の質問: EnableHypermediaSupport を使用せずに HAL レンダリングを有効にするにはどうすればよいですか?
あまり役に立たないと思うので、意図的にコード スニペットを省略しました。
spring - Spring Data から PagedResourcesAssembler を正しく使用するには?
Spring 4.0.0.RELEASE、Spring Data Commons 1.7.0.M1、Spring Hateoas 0.8.0.RELEASE を使用しています。
私のリソースは単純な POJO です。
リソース アセンブラーは、User オブジェクトを UserResource オブジェクトに変換します。
UserController 内で、サービスから取得し、次に示すようにusingにPage<User>
変換します: https://stackoverflow.com/a/16794740/1321564PagedResources<UserResource>
PagedResourcesAssembler
これは呼び出さUserResourceAssembler
れず、単にUser
custom の代わりに の内容が返されますUserResource
。
単一のリソースを返すと動作します:
はPagedResourcesAssembler
一般的な引数を必要としますがT toResource(T)
、 を に変換したくないため、特に は POJO でリソースがないため、 をPage<User>
使用PagedResources<User>
できUser
ません。
質問は次のとおりです。それはどのように機能しますか?
編集:
私の WebMvcConfigurationSupport:
解決:
java - Spring Hateos @EnableEntityLinks は EntityLinks Bean を提供しません (NoSuchBeanDefinitionException)
Spring HATEOAS を使用する Spring Boot アプリケーションがあり、@EnableEntityLinks
有効になっています。アプリケーションには、フィールドを含む mvc-controller があります@Autowired EntityLinks entityLinks
。
@EnableEntityLinks
私はそれが Beanを提供することを期待していましたEntityLinks
(によると: Spring HATEOAS によるリンクの公開と管理) が、私はNoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.hateoas.EntityLinks] found
このアプリケーションはテスト アプリケーションであるため、非常に小さいです。
アプリケーション.java:
カスタマーコントローラー:
Customer.java
pom.xml
例外:
json - 結果の JSON の構造は異なります
HypermediaType HAL を備えた Spring Hateoas で Spring MVC を使用する Web アプリケーションがあります。私のコントローラーでは、Resources クラスを使用してサブジェクトのリストを入れています。問題は、1 つの要素のリストを入れた場合、結果の json の構造が 2 つの要素を入れた場合と区別されることです。リストに要素が 1 つしか含まれていない場合、リストは削除され、単一のオブジェクトとして返されます。2 つのコントローラー メソッドの下に、結果の Json を貼り付けました。
私は今知りたいのですが、なぜそのような動作なのか、結果のjsonでHateoasに強制的にリストを使用させるにはどうすればよいですか?
Hateoas の構成:
spring - Spring Data Rest と Hateoas
@RestResource アノテーションでリポジトリにアノテーションを付けて、Spring Data Rest の動作をテストするための簡単なチュートリアルに従っていました。私は非常に単純なシナリオを持っています: @RestResource で注釈が付けられた Jpa User Entity と UserRepository
アノテーション構成の初期化を使用し、RepositoryRestMvcConfiguration を登録しようとするため、UserRepository を登録できます。しかし、アプリケーションが起動せず、次の例外があります
spring-hateoas: 0.8.0.RELEASE spring-data-rest-webmv: 2.0.0.RC1 spring-framework: 4.0.0.RELEASE spring-data-jpa:1.4.3 を使用します。
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)
しかし、うまくいきません。
ありがとうございます。