【发布时间】:2014-05-01 21:50:43
【问题描述】:
我有一些有效的代码,但我正在寻找一种更好的方法来做到这一点。我有一个 RESTful Web API,我想支持 JSON、XML 和 TEXT 媒体类型。 JSON 和 XML 很容易使用带有 JAXB 注释的“bean”类。我刚刚得到 text/plain 的工作,但我希望 Jersey 更聪明一点,并且能够将我的 bean 列表 List<Machine> 转换为使用 toString 的字符串。
这里是资源类。 JSON 和 XML 媒体类型使用 JAXB 注释 bean 类。纯文本使用自定义字符串格式(基本上是命令的标准输出表示)。
@Path("/machines")
public class MachineResource {
private final MachineManager manager;
@Inject
public MachineResource(MachineManager manager) {
this.manager = manager;
}
@GET @Path("details/")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public List<Machine> details() {
return manager.details();
}
@GET @Path("details/")
@Produces({ MediaType.TEXT_PLAIN })
public String detailsText() {
StringBuilder text = new StringBuilder();
for(Machine machine : manager.details()) {
text.append(machine.toString());
}
return text.toString();
}
有没有更好的方法可以让 Jersey 自动转换为字符串,所以我只需要在这里实现一个方法?(可以处理所有 3 种媒体类型)
我看到我可以实现MessageBodyWriter,但这似乎要麻烦得多。
编辑:
如果重要的话,我会使用嵌入式 Jetty 和 Jersey 选项。
谢谢!
【问题讨论】:
标签: java web-services rest jaxb jersey