除了 @Produces 注释之外,Jersey (JAX-RS) 如何知道将 POJO 视为特定的 mime 类型?

2024-01-31

我看到很多泽西岛的例子,看起来像这样:

public class ItemResource {

    @GET
    @Path("/items")
    @Produces({"text/xml", "application/json"})
    public List<Item> getItems() {
        List<Item> items = new ArrayList<Item>();

        Item item = new Item();
        item.setItemName("My Item Name!");
        items.add(item);

        return items;
    }
}

但后来我在剖析 Item 以及 Jersey 如何知道如何将 Item 转换为 XML 或 JSON 时遇到了麻烦。我见过一些非常基本的示例,它们只返回构造的 HTML 或 XML 的字符串,这对我来说更有意义,但我错过了下一步。我查看了这些示例,其中一个很突出(json-from-jaxb 示例),因为该对象标记有以下类型的注释:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "flight"
})
@XmlRootElement(name = "flights")

我正在寻找逐步涵盖此“翻译”的教程,或者此处解释如何将 POJO 翻译为特定 mime 类型的输出。谢谢!


这里有两件事在起作用。首先,@Produces 注释中的媒体类型用于内容协商。将客户端发送的 Accept 标头值中的媒体类型与 @Produces 注释中的媒体类型进行比较,并选择最合适的一种。假设您的示例中是 text/xml。

当构造响应主体时,Jersey 内部尝试找到一个可以将 Item 对象转换为 text/xml 的 MessageBodyWriter。通常程序员会提供这些“映射器”类,但对于 XML 和 JSON,为了方便起见,Jersey 已经内置了 MessageBodyReaders。

这就是为什么看起来好像发生了某种魔法。

Jan

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

除了 @Produces 注释之外,Jersey (JAX-RS) 如何知道将 POJO 视为特定的 mime 类型? 的相关文章

随机推荐

  • SQL Server 对 OrmLite 的特定类型支持

    我刚刚了解了一种天才类型 它可以简化我的很多工作 但看起来我喜欢的 ORM 无法识别它 有没有办法让 ServiceStack OrmLite 识别HierarchyId在 SQL Server 中 关于要修改哪些文件的任何建议以及如何继续
  • 停止 Xcode 自动为 Objective-C 标头生成 Swift 接口

    是否可以在显示 Objective C 标头时阻止 Xcode 8 自动生成 Swift 界面 例如通过设置用户默认值 从理论上讲 这是 Xcode 的一个非常好的功能 不幸的是它不能可靠地工作 对我来说 大多数时候它甚至似乎都失败了 由于
  • 在 Python 中重新启动线程

    我正在尝试为 Python 3 4 中的一个项目制作线程飞行软件 其中我需要线程自行重新启动 以防在传感器读取期间发生 I O 错误或类似的意外崩溃 因此 我正在努力制作一个看门狗来检查线程是否已死亡并重新启动它们 起初 我尝试检查线程是否
  • CSS最后一行没有结束标记“;”的原因是什么? [复制]

    这个问题在这里已经有答案了 我使用 CSS 一段时间了 我发现在很多教程和练习中 CSS 标记的最后一行没有 添加到其中 例如 ul li hover ul display block ul li ul list style none po
  • 尝试在 Heroku 上部署 Node.js/Express/Socket.io 应用程序时出现应用程序错误

    我对所有这些技术 包括一些 JavaScript 都相当陌生 所以你可能需要耐心听我说 我相当仔细地遵循了 Socket IO 文档中的 ChatApp 教程 并根据我的喜好对应用程序进行了一些修改 然而 我认为我在服务器交互和其他方面没有
  • 如何使用 JavaScript 创建 zip 文件?

    我发现了一个可以生成zip文件的javascript插件 它的名字叫jszip https stuk github io jszip 我尝试过 但我认为它只能生成将在 zip 文件中编译的文件 我想要的是能够将现有文件添加到它将生成的 zi
  • SQLite 的 DLL 地狱

    我们的一些用户遇到了运行时加载的 sqlite interop dll 版本的问题 这确实令人头疼 背景 为 AnyCPU 构建的 WPF 应用程序 使用 SQlite NET 和 sqlite interop dll 版本 1 0 89
  • 如何叠加两个geom_bar?

    我正在尝试覆盖 2 个条形图geom bar源自 2 个独立的 data frames dEQ lab perc 1 lmP 55 9 2 lmN 21 8 3 Nt 0 6 4 expG 5 6 5 expD 0 0 6 prbN 11
  • 如何使用 java.util.logging 对齐日志消息

    有人可以发布如何实现日志消息对齐 10 14 31 main package1 Class1
  • 在linux上,如何检查端口是否处于监听状态而不尝试连接

    如何使用 C 检查本地计算机上的端口 如果也需要传递 IP 或接口 是否处于侦听状态 我不想连接到这个端口进行检查 因为我不想激怒这个端口后面的服务 我想用它来将缺少的 net tcp listen 项目添加到 Zabbix 编辑 这是真正
  • 如何在多列上创建全文索引?

    我正在运行以下查询tbl query select from tbl query q where match q query desc q query desc details against test1 WITH QUERY EXPANS
  • 分配对象的严格别名规则

    C99 6 5 6 访问其存储的对象的有效类型 value 是对象的声明类型 如果有 75 如果通过类型将值存储到没有声明类型的对象中 左值的类型不是字符类型 则类型为 左值成为该访问的对象的有效类型 以及不修改存储值的后续访问 如果使用将
  • Scala、Java 和平等

    val filesHere new java io File listFiles val filesHere2 new java io File listFiles scala gt filesHere filesHere2res0 布尔值
  • Angular2组件:测试表单输入值变化

    我有一个文本输入 我正在监听更改 mycomponent ts ngOnInit this searchInput new Control this searchInput valueChanges distinctUntilChanged
  • 在印度使用 Spotify iOS SDK

    我正在创建一个流媒体应用程序 并希望使用 Spotify iOS SDK 来实现流媒体目的 但是 Spotify 的服务在印度不可用 我有 Spotify 高级帐户 位于美国 开发工作将在印度举行 我的问题是 我可以使用美国的高级帐户在印度
  • ES6 `从导入导出*`?

    是否有使用 ES6 或 ES7 或 babel 的语法可以让我轻松地将多组子文件捆绑在一起 例如 给定 action creators index js action creators foo actions js action creat
  • Haskell Cabal 为所有已安装的软件包重新生成文档

    如何为所有本地安装的 cabal 软件包生成并安装文档 我在 cabal config 中打开了文档标志 这意味着所有新安装的软件包也将生成文档 但是如何为所有已安装的软件包生成文档呢 有没有办法自动cabal install reinst
  • 将文件信息从 html 文件选择器输入传递给 python 和 bokeh

    我正在尝试创建一个简单的散景服务器应用程序 允许用户从
  • IntelliJ Github 问题

    尝试将项目推送到 github 时出现以下错误 remote Permission to RedNetty RedPractice git denied to JackCDev fatal unable to access https gi
  • 除了 @Produces 注释之外,Jersey (JAX-RS) 如何知道将 POJO 视为特定的 mime 类型?

    我看到很多泽西岛的例子 看起来像这样 public class ItemResource GET Path items Produces text xml application json public List