Spring Framework 4.1.0 と Spring HATEOAS 0.16.0 を使用して、Spring Web アプリケーションとそのアプリケーション用の Spring テスト クライアントの両方を開発しています。
テスト クライアントには、次のようなステートメントがあります。
ResponseEntity<Resource<Calculation>> response = restTemplate.exchange(
calculationsUri,
HttpMethod.POST,
new HttpEntity<Calculation>(calculation),
new ParameterizedTypeReference<Resource<Calculation>>()
);
...ここCalculationで、Jackson アノテーション (たとえば、@JsonProperty) を持つ POJO です。
CURIE がなければ、そのRestTemplate.exchange()呼び出しは成功します:response.getBody().getLinks()の null 以外の空でないインスタンスを返しますList<Link>。
私の Web アプリケーションには、「サブ計算」などの非標準のリンク関係があります。CURIEを使いたい。
CURIE を使用すると、そのRestTemplate.exchange()呼び出しは失敗します: 応答デシリアライゼーション コードが をスローorg.springframework.http.converter.HttpMessageNotReadableExceptionします。原因com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: 'JSON を読み取れませんでした: 認識されないフィールド "名前" (クラス org.springframework.hateoas.Link)、無視可能としてマークされていません (既知のプロパティ "href" の 1 つ) ])'
特に、Jackson_linksは応答 JSON のマップからList<Link>型付きフィールドへの CURIE のデシリアライズに失敗しますorg.springframework.hateoas.ResourceSupport.links。応答の JSON は次のようになります。
{
"_links" : {
"self" : {
"href" : "..."
},
"myNamespace:sub-calculations" : [ {
"href" : "..."
}, {
"href" : "..."
} ],
"curies" : [ {
"href" : ".../{rel}",
"name" : "myNamespace",
"templated" : true
} ]
}
}
HAL+JSON ("application/hal+json")表現が CURIEを使用RestTemplate.exchange()するリソースを取得するにはどうすればよいですか?