关于如何使用JAXB and HATEOAS包含超媒体链接的例子有很多,但我找不到任何适用于超媒体+ JSON的例子。我喜欢JAXB,因为只需使用注释就可以将XML映射到对象。包括HATEOAS,这几乎就是我所需要的,只是它只包含在XML中(当然是因为JAXB )。问题是JAXB提供者不支持JSON、as per 2.0 user guide。
因此,使用上面的示例,我要查找的不是这个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规范还没有标准化,所以现在还没有框架来做这件事呢?我找到的最多的是a proposal和一个"To be continued...“
我知道我可以使用MessageBodyWriter创建自己的JAX-RS提供程序,但这只有助于将“应用程序/json”请求编组到对象。我还需要一种方法来获取超媒体链接。
我搜索它的原因是因为我当前的需求是返回包含超媒体链接的JSON数据。
有谁有完整的工作示例吗?我找不到,我隐约记得看过一篇文章,说我需要“滚你自己的”。不可取,但如果这是需要的.
发布于 2014-08-31 01:31:17
你可以使用Jackson来做这件事,它应该能够做你想做的事情,例如:
@Data
public class Container {
@JsonProperty("_links")
Map<String,Link> links = new LinkedHashMap<>();
}
@Data
public class Link {
@JsonProperty("href")
private String href;
}更正式地说,您可以定义一个自定义容器,而不是我定义的通用容器。
https://stackoverflow.com/questions/25573790
复制相似问题