我有一个在 Tomcat 6 容器中运行的简单 JAX-RS 服务。是否可以在浏览器中不仅显示文本而且显示 XML,以与 Rails 中类似的方式通过附加.xml
or .json
?
我拥有的服务基于 本教程。
简短的回答是否定的,JAX-RS 不允许您简单地通过将“xml”或“json”附加到 URL 来切换响应内容类型。
该规范明确定义了内容协商的发生方式——通过Accept
来自客户端的 HTTP 标头,与@Produces
服务器端的注释匹配。因此,按照规范,如果您想获得不同的内容类型,那么您可以在Accept
标头中指定,并且将返回该内容类型(只要服务器支持它)。
话虽如此,JAX-RS 实现可以自由地实现自定义(非便携式)扩展,以支持类似于您所描述的行为。一个示例是 RESTEasy,它允许您将所需的内容类型定义为查询参数Section 17.2 - Query String Parameter-based协商。
您还可以设计您的资源类以轻松支持所需的行为 - 一些示例可以在Apache CXF 内容协商指南中看到。