48.3.2. 为常见用例创建响应

概述

Response 类提供了处理 RESTful 服务所需的更常见响应的快捷方式方法。这些方法使用提供的值或默认值来处理正确的标头。它们也会在适当时处理填充实体正文。

为成功请求创建响应

当成功处理请求时,应用程序需要发送响应,以确认请求已实现。该响应可以包含实体。

成功完成响应时最常见的响应是 OKOK 响应通常包含与请求对应的实体。Response 类具有超载的 ok() 方法,它将响应状态设置为 200,并将提供的实体添加到已括起的响应构建器中。ok() 方法有五个版本。最常用的变体是:

  • response .ok()- 创建状态 200 和空实体正文的响应。
  • response .ok(java.lang.Object 实体)- 创建具有 200 状态的响应,将提供的对象存储在响应实体正文中,并通过内省对象来确定实体媒体类型。

创建具有 200 响应的响应 演示了创建具有 OK 状态的响应的示例。

创建具有 200 响应的响应

import javax.ws.rs.core.Response;
import demo.jaxrs.server.Customer;
...

Customer customer = new Customer("Jane", 12);

return Response.ok(customer).build();

对于请求者不是预期实体正文,可能更适合发送 204 No Content 状态,而不是 200 OK 状态。Response.noContent() 方法将创建相应的响应对象。

创建具有 204 状态的响应 显示创建具有 204 状态的响应的示例。

创建具有 204 状态的响应

import javax.ws.rs.core.Response;

return Response.noContent().build();

创建重定向响应

Response 类提供了处理三种重定向响应状态的方法。

303 查看其他

当请求的资源需要永久将消费者重定向到新资源以处理请求时,303 See Other status 非常有用。

ResponseseeOther() 方法创建了具有 303 状态的响应,并将新资源 URI 放置到消息的 Location 字段中。seeOther() 方法采用单个参数,它将新 URI 指定为 java.net.URI 对象。

304 未修改

304 Not Modified 状态可用于不同的内容,具体取决于请求的性质。它可用于表示请求的资源自以前的 GET 请求以来没有变化。它还可用来表明修改资源的请求不会导致资源被改变。

Response classes notModified() 方法创建了具有 304 状态的响应,并设置 HTTP 消息修改的日期属性。notModified() 方法有三个版本:

  • notModified
  • notModifiedjavax.ws.rs.core.Entitytag
  • notModifiedjava.lang.Stringtag
307 临时重定向

当请求的资源需要将使用者定向到新资源时,307 临时重定向 状态非常有用,但希望消费者继续使用该资源来处理将来的请求。

ResponsetemporaryRedirect() 方法创建了具有 307 状态的响应,并将新资源 URI 放置到消息的 Location 字段中。temporaryRedirect() 方法采用单一参数,它将新 URI 指定为 java.net.URI 对象。

创建具有 304 状态的响应 显示创建具有 304 状态的响应的示例。

创建具有 304 状态的响应

import javax.ws.rs.core.Response;

return Response.notModified().build();

创建对信号错误的响应

Response 类提供了为两个基本处理错误创建响应的方法:

  • serverError- 创建状态为 500 Internal Server Error 的响应。
  • notAcceptablejava.util.List<javax.ws.rs.core.Variant>变体- 创建具有 406 无可接受的状态以及包含可接受资源类型列表的实体正文。

创建具有 500 个状态的响应 显示创建具有 500 状态的响应的示例。

创建具有 500 个状态的响应

import javax.ws.rs.core.Response;

return Response.serverError().build();