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();
注意您也可以简单地将
ResponseBuilder
从Response
类的方法返回给ResponseBuilderImpl
对象。
更多信息
有关 Response
类的更多信息,请参阅 Response
类的 Javadoc。
有关 ResponseBuilder
类的更多信息,请参阅 ResponseBuilder
类的 Javadoc。
有关 Apache CXF ResponseBuilderIml
类的更多信息,请参阅 response BuilderImpl
Javadoc。