【发布时间】:2014-10-23 18:58:57
【问题描述】:
有很多关于如何使用JAXB and HATEOAS 包含超媒体链接的示例,但我找不到任何超媒体 + JSON 的示例。我喜欢 JAXB,因为只需使用注释,您就可以将 XML 映射到 Object。包括 HATEOAS,这几乎是我需要的,除了它只在 XML 中(当然是因为 JAXB)。问题是 JAXB 提供者不支持 JSON,as per 2.0 user guide。
所以,使用上面的示例,我正在寻找的不是这个 XML+超媒体输出
<user-management>
<users>/user-management/users</users>
<report>/user-management/report</report>
</user-management>
改为获取这个 JSON+超媒体输出
{
"_links": {
"self": { "href": "/user-management" },
"users": { "href": "/user-management/users" },
"report": { "href": "/user-management/report" },
}
}
*是的,两个示例都是资源的表示,但对象/模型的示例应该相似,因此我不包括它们。
是不是因为这个 JSON+超媒体规范还没有标准化,所以今天没有框架可以做到这一点?我发现最多的是a proposal,还有一个“To be continued...”
我知道我可以使用 MessageBodyWriter 创建自己的 JAX-RS 提供程序,但这仅有助于将“应用程序/json”请求编组到对象。我仍然需要一种方法来获取超媒体链接。
我搜索这个的原因是因为我当前的要求是返回包含超媒体链接的 JSON 数据。
有人有完整的工作示例吗?我找不到任何东西,我隐约记得看到一篇文章说我需要“自己动手”。不可取,但如果这就是它所需要的......
【问题讨论】:
-
技术上也没有针对 XML 执行此操作的标准方法。 JAXB 可能是一种方法,但重要的是媒体类型本身是否具有传达链接的能力。 XML 和 JSON 都不能做到这一点。但是,像 HAL 这样的格式位于两者的“顶部”,并为媒体类型提供了表达链接的能力。
标签: xml json rest jax-rs hypermedia