Jes*_*ess 5 java rest web-services jaxb jersey
我有一些有效的代码,但我正在寻找一种更好的方法。我有一个RESTful Web API,我想支持JSON,XML和TEXT媒体类型。使用带有JAXB注释的“ bean”类,可以轻松实现JSON和XML。我只是使用了纯文本/纯文本,但是我希望Jersey更加智能,并且能够使用来将我的bean列表转换List<Machine>为字符串toString。
这是Resource类。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();
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法可以将Jersey自动转换为字符串,所以我只需要在这里实现一个方法?(可以处理所有3种媒体类型)
我看到可以实现MessageBodyWriter,但这似乎要麻烦得多。
如果有关系,我将使用嵌入式的Jetty和Jersey选项。
谢谢!
为了执行以下操作,您需要执行MessageBodyReader/操作:Writer
@GET @Path("details/")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN })
public List<Machine> details() {
return manager.details();
}
Run Code Online (Sandbox Code Playgroud)
需要编写的代码并不多,如果您能够将其编写得足够通用,您将能够从中得到一些重用。
| 归档时间: |
|
| 查看次数: |
14294 次 |
| 最近记录: |