0

JAXB と HATEOASを使用して Hypermedia リンクを含める方法の例はたくさんありますが、Hypermedia + JSON の例は見つかりません。私が JAXB を気に入っているのは、注釈を使用するだけで XML をオブジェクトにマップできるからです。HATEOAS をインクルードします。これは、XML のみを除いて、ほとんど必要なものです (もちろん JAXB のため)。問題は、 2.0 ユーザー ガイドに従って、JAXB プロバイダーが JSON をサポートしていないことです。

したがって、上記の例を使用して、私が探しているのは、この XML+Hypermedia 出力の代わりです

<user-management>
  <users>/user-management/users</users>
  <report>/user-management/report</report>
</user-management>

代わりに、この JSON+Hypermedia 出力を取得します

{
  "_links": {
    "self": { "href": "/user-management" },
    "users": { "href": "/user-management/users" },
    "report": { "href": "/user-management/report" },
  }
}

*はい、どちらの例もリソースの表現ですが、オブジェクト/モデルの例は類似している必要があるため、それらを含めません。

この JSON+Hypermedia 仕様が標準化されていないため、現在これを行うためのフレームワークがないということでしょうか? 私が見つけたのは、提案と「継続する...」でした。

MessageBodyWriter を使用して独自の JAX-RS プロバイダーを作成できることは承知していますが、これはオブジェクトへの "application/json" 要求のマーシャリングにのみ役立ちます。ハイパーメディア リンクを取得する方法がまだ必要です。

これを探している理由は、現在の要件がハイパーメディア リンクを含む JSON データを返すことだからです。

誰かが完全に機能する例を持っていますか? 何も見つからず、「自分で巻く」必要があるという記事を見たのを漠然と思い出しました。望ましくありませんが、それが必要な場合は...

4

1 に答える 1

0

これにはJacksonを使用できます。つまり、必要なことを実行できるはずです。

@Data
public class Container {
    @JsonProperty("_links")
    Map<String,Link> links = new LinkedHashMap<>();
}

@Data
public class Link {
    @JsonProperty("href")
    private String href;
}

より正式には、私が定義した一般的なコンテナーではなく、カスタム コンテナーを定義できます。

于 2014-08-30T17:31:16.967 に答える