Red Hat Training

A Red Hat training course is available for Red Hat Fuse

48.3. 微调应用程序响应

48.3.1. 构建响应的基础知识

概述

当资源方法返回普通 Java 结构时,RESTful 服务通常需要更精确地控制返回到消费者的响应。JAX-RS 响应 类允许资源方法对发送至使用者的返回状态具有一些控制,并在响应中指定 HTTP 消息标头和 cookies。

响应 对象嵌套代表返回到使用者实体的对象。响应 对象使用 ResponseBuilder 类作为工厂来实例化。

ResponseBuilder 类还有许多用于操作响应元数据的方法。例如,ResonseBuilder 类包含设置 HTTP 标头和缓存控制指令的方法。

响应和响应构建器之间的关系

响应 类具有受保护的构造器,因此无法直接实例化。它们是使用 Response 类括起的 ResponseBuilder 类创建的。response Builder 类是所有信息的拥有者,它将封装在从其创建的响应中。ResponseBuilder 类还具有负责在消息上设置 HTTP 标头属性的所有方法。

Response 类提供了一些方法来轻松设置正确的响应代码并嵌套实体。每个常见响应状态代码都有方法。与状态对应的方法(包括实体正文或所需元数据)包括允许直接设置信息到关联的响应构建器的版本。

response Builder 类的 build () 方法返回一个响应对象,其包含在调用方法时存储在响应构建器中的信息。返回响应对象后,响应构建器将返回到干净的状态。

获取响应构建器

获取响应构建器有两种方法:

  • 使用 Response 类的静态方法,如 使用 Response 类获取响应构建器 所示。

    使用 Response 类获取响应构建器

    import javax.ws.rs.core.Response;
    
    Response r = Response.ok().build();

    当通过这种方式获取响应构建器时,您无法在多个步骤中操作实例。您必须将所有操作字符串到一个方法调用中。

  • 使用 Apache CXF 特定 ResponseBuilderImpl 类。通过本课程,您可以直接使用响应构建器。但是,需要手动设置所有响应构建器信息。

    例 48.1 “使用 ResponseBuilderImpl 类获取响应构建器” 显示如何使用 ResponseBuilderImpl 类重写 使用 Response 类获取响应构建器

    例 48.1. 使用 ResponseBuilderImpl 类获取响应构建器

    import javax.ws.rs.core.Response;
    import org.apache.cxf.jaxrs.impl.ResponseBuilderImpl;
    
    ResponseBuilderImpl builder = new ResponseBuilderImpl();
    builder.status(200);
    Response r = builder.build();
    注意

    您也可以简单地将 ResponseBuilderResponse 类的方法返回给 ResponseBuilderImpl 对象。

更多信息

有关 Response 类的更多信息,请参阅 Response 类的 Javadoc

有关 ResponseBuilder 类的更多信息,请参阅 ResponseBuilder 类的 Javadoc

有关 Apache CXF ResponseBuilderIml 类的更多信息,请参阅 response BuilderImpl Javadoc