【发布时间】:2015-04-18 12:57:51
【问题描述】:
我正在使用 Apache CXF 开发的 RESTful 应用程序,我想为它引入超媒体功能。
我们的大部分 jaxrs:serviceBeans 都遵循这个模板:
@GET
@Path("/{exampleId}")
public ExampleJSON get(@PathParam("exampleId") Integer exampleId) {
ExampleJSON example;
// Load data from repository here...
// Add link to self.
String href = javax.ws.rs.core.Link.fromResource(ExampleService.class).build().getUri().toString();
// HypermediaLink is a custom object to hold a "href" and "rel" strings
HypermediaLink linkToSelf = new HypermediaLink();
linkToSelf.setHref(href + example.getId());
linkToSelf.setRel("self");
// Inherited method, just adds a HypermediaLink to a collection in the parent class
example.addHypermediaLink(linkToSelf);
// Return JSON compatible object, JACKSON will serialize it nicely.
return example;
}
这是基本概念。请记住,我出于解释目的简化了此代码;所以,很容易理解。
这段代码运行良好;但我想知道是否有更好的方法来使用 Apache CXF 做到这一点。我对如何增强它有一些想法;但是,它需要一些自定义注释。
我看到了一些使用 Jersey 的示例,但我想坚持使用 Apache CXF。
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
我正在考虑是否投票结束您的问题:您的实际问题是什么?你想解决什么问题?你不应该在这里寻求建议。
-
@AndreiI,目前的方法非常冗长。我正在寻找一个图书馆来更好地做这样的事情。 Spring WS 有这样的东西 spring.io/guides/gs/rest-hateoas 。现在,我正在尝试在 Apache CXF 中做类似的事情。
-
这是一个implementation,我通过快速谷歌搜索找到了。你或许能从中有所收获
-
谢谢@peeskillet,我以前见过这个。唯一的问题是 jax-rs-hateoas-core 返回一个响应,而我返回一个 POJO(ExampleJSON),后来由 Jackson 序列化。