使用内容协商功能在 JAX-RS 应用程序中处理多种内容类型

RESTful 应用程序的其中一个优点是,能够返回资源的不同表示。借助具象状态传输 (REST),客户机和服务器可以交换同一介质类型的资源,也可以使用不同的介质类型。内容协商使客户机和服务器能够对用来交换数据的内容格式达成一致。

关于此任务

资源以许多不同的格式表示。XML、JavaScript 对象表示法 (JSON)、Atom、纯文本、PNG、JPEG、GIF 和定制或专有格式用来表示资源。具象状态传输 (REST) 使您能够以多种格式灵活地表示单一资源。

根据应用程序的需求不同,资源可以返回单一格式的表示,也可以返回不同格式的表示(这取决于请求)。例如,使用 JavaScript 客户机访问的资源可能会由于 JSON 易于使用而选择 JSON 表示。但是,其他客户机首选 XML。

如果要为客户机提供多种格式,请使用内容协商功能。内容协商是一种方法,即,客户机与服务器在所要使用的响应内容类型上达成一致。影响响应的内容协商分为三种类型。您可以使用基于 URL、基于请求参数或基于 HTTP 头的内容协商。

过程

  1. 配置开发环境。
    1. 在开始开发 JAX-RS 应用程序之前,您必须通过将 JAX-RS 库添加到类路径来设置开发环境。
  2. 在 JAX-RS Web 应用程序中定义资源。
    1. 资源是 RESTful 服务的基本构建块。资源可以包含静态数据或动态更新的数据。在线书店应用程序中的资源示例包括书籍、来自书店的订单以及一组用户。通过在应用程序中标识资源,可以使服务更有用更易于开发。
  3. 配置 JAX-RS 应用程序。

    根据您的需要,可以通过多种方式来配置 JAX-RS 应用程序。要利用 Java™ Platform, Enterprise Edition (Java EE) 6 功能,您可以使用注释扫描功能。 通过使用注释扫描,您可以省略 JAX-RS javax.ws.rs.core.Application 子类或具有已至少定义的 javax.ws.rs.core.Application 子类。此外,如果要使用 IBM® JAX-RS Servlet 和过滤器中可用的功能,那么您可以指定 IBM JAX-RS Servlet 或过滤器。

    通过使用其中一个 JAX-RS V1.1 配置方法,您可以在应用程序中省略 javax.ws.rs.core.Application 子类或具有用于返回空类集的 javax.ws.rs.core.Application 子类,以通知 JAX-RS 运行时环境查找并使用应用程序中的所有 JAX-RS 类。当您在开发应用程序时,如果您不想将每一个相关 JAX-RS 类都手动添加到 javax.ws.rs.core.Application 子类,那么您可能要使用此方法。

    通过指定特定的 IBM JAX-RS Servlet 和过滤器,您可以利用 IBM JAX-RS 并确保其特定的行为。例如,使用 IBM JAX-RS 过滤器有助于混合利用具有相同 URL 模式的 JAX-RS 资源与 JavaServer Pages (JSP) 文件来开发 Web 应用程序。

    即使有支持使用可选 web.xml 文件的 JAX-RS V1.1 配置方法,如果要指定安全性约束或角色,或者如果要使用 web.xml 文件来利用已启用的其他功能,那么必须在 web.xml 文件中指定该信息。

    选择以下 3 个方法中的一个来配置 JAX-RS 应用程序:

    • 使用 JAX-RS 1.1 方法配置 JAX-RS 应用程序

      如果要使用注释扫描功能或使用 JAX-RS 1.1 配置方法,请使用此方法。可以使用注释扫描功能来提高应用程序可移植性,最小化配置代码量或动态修改应用程序而不更改应用程序代码。

    • 为 JAX-RS Servlet 配置 web.xml 文件

      如果要指定通过使用 Servlet 初始化参数来启用的功能以更改行为并确保获取 IBM JAX-RS Servlet,请使用此方法。使用 Servlet 时,您可以在 web.xml 文件中定义要对基本 URL 追加的 Servlet 路径。

    • 为 JAX-RS 过滤器配置 web.xml 文件

      当您具有采用不同 URL 模式的 JSP、其他 Servlet 和过滤器以及 JAX-RS 资源时,如果要使用过滤器,请使用此方法。您可以配置 web.xml 文件以定义过滤器,这些过滤器指示可用于调用过滤器的可能 URL。

  4. 实现内容协商,以便处理多种内容类型。 使用内容协商功能来确定服务器向客户机返回的最佳资源表示。您可以实现基于 URL 模式、请求参数或 HTTP 头的内容协商。
  5. 组装 JAX-RS Web 应用程序。
    1. 为 JAX-RS Web 应用程序开发 Java 类文件并编辑 web.xml 文件以启用 JAX-RS Servlet 之后,您已准备好组装应用程序。请将 Web 应用程序组装成 Web 应用程序归档 (WAR) 包。在有需要时,可以将 WAR 包组装成企业归档 (EAR) 包。
  6. 部署 JAX-RS Web 应用程序。
    1. 在组装 JAX-RS Web 应用程序之后,需要将 Web 归档 (WAR) 包或企业归档 (EAR) 包部署到应用程序服务器。

结果

您已实现内容协商以确定用于表示数据的资源的格式。


指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_contentnegotiation
文件名:twbs_jaxrs_contentnegotiation.html