gpt4 book ai didi

java - 创建文本/纯 Jersey 响应

转载 作者:搜寻专家 更新时间:2023-10-31 20:02:34 25 4
gpt4 key购买 nike

我有一些可用的代码,但我正在寻找一种更好的方法来实现它。我有一个 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 选项。

谢谢!

最佳答案

实现 MessageBodyReader/Writer 是您需要做的,以便执行以下操作:

@GET @Path("details/")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN })
public List<Machine> details() {
return manager.details();
}

要编写的代码不是很多,如果您能够编写足够通用的代码,您将能够从中获得一些重用。

关于java - 创建文本/纯 Jersey 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22611105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com