私はSpringデータREST 2.5.1、Jackson 2.8.0、Spring Boot 1.3.6を使用しています。SpringデータREST - Java HATEOASクライアントのエンティティリストを消費
私はRestTemplate経由でリポジトリから簡単なエンティティのリストを取得しようとしています。私はブラウザでエンドポイントに到達し、期待されるHALデータを得ることができます。単一のエンティティを取得するには、次のようにうまく動作します。これらはすべてデフォルトのSDRエンドポイント(例:localhost:{port}/myEntity)を使用しています。
ResponseEntity<Resource<MyEntity>> responseEntity =
new RestTemplate()
.exchange(
uri + "/1",
HttpMethod.GET,
HttpEntity.EMPTY,
new ParameterizedTypeReference<Resource<MyEntity>>() {}, port
)
それとも 新しいRestTemplate()。getForEntity(URI + "/ 1"、MyEntity.class、ポート)
SOの質問の多くは、リストを取得された例を見つけ、示すように見えると問題。私はParameterizedTypeReference
とResources
、Resource
、MyEntity
、配列、リストを試しました。すべて運がない。
ResponseEntity<Resources<Resource<MyEntity>>> responseEntity =
new RestTemplate()
.exchange(
uri,
HttpMethod.GET,
HttpEntity.EMPTY,
new ParameterizedTypeReference<Resources<Resource<MyEntity>>>() {}
, port
)
などResources
、Resource
、List<MyEntity>
、MyEntity
、任意の種々のほとんどを上記のように呼び出された場合、ResponseEntity
は空です。 Like:
<200 OK,Resources { content: [], links: [] },{Server=[Apache-Coyote/1.1], Content-Type=[application/json;charset=UTF-8], Transfer-Encoding=[chunked], Date=[...]}>
文字列JSONはブラウザでは以下のようになります。
{
"_embedded" : {
"myEntities" : [ ... ]
},
"_links" : {
"self" : {
"href" : "http://localhost:8080/myEntity"
},
"profile" : {
"href" : "http://localhost:8080/profile/myEntity"
},
"search" : {
"href" : "http://localhost:8080/myEntity/search"
}
},
"page" : {
"size" : 20,
"totalElements" : 10,
"totalPages" : 1,
"number" : 1
}
}
リポジトリの定義:私が行方不明です何に
@RepositoryRestResource(collectionResourceRel = "myEntities", path = "myEntity")
public interface MyEntityRepository extends PagingAndSortingRepository<MyEntity, Long>
, QueryDslPredicateExecutor<MyEntity>
, QuerydslBinderCustomizer<QMyEntity> { }
任意の考え?
「リソース」の構造を見ると、JSONドキュメントの構造とは異なることがわかります。それはあなたの車の鍵であなたの家を開こうとするようなものです。 – zeroflagL
ええ、私は努力している方法が機能していないことを知っています。私は働いているものを見つけようとしています。 SDRがこのフォーマットを作成している場合、それを消費する予定のSpringクラスが存在する必要があります。私は標準的なフォーマットのために私自身をロールバックする必要はありません。 – JudgingNotJudging
あなたの例の文書の基礎は 'PagedResources'です。 '_embedded'は' EmbeddedWrapper'に依存します。しかし、ドキュメントを直接表現するクラスはありません。 '_embedded'プロパティが動的なので、ドキュメントは動的に構築されます。 – zeroflagL