HTTP 头和状态码可以帮助中间程序和客户机程序了解关于应用程序的请求和响应的信息。HTTP
头包含元数据信息。HTTP 状态码提供了有关响应的状态信息。
开始之前
请参阅 HTTP 1.1 规范以熟悉 HTTP 头和 HTTP 状态码。
关于此任务
HTTP 头包含元数据信息(例如安全认证信息)、所使用的用户代理以及高速缓存控制元数据。HTTP 规范定义了标准 HTTP 头;但是,有需要时,您可以使用定制 HTTP 头。
您可以从请求中读取 HTTP 头并在响应中设置头。有一组公共的请求和响应头,但也有独特的请求头和响应头。JAX-RS
提供了用于读取 HTTP 头的 HttpHeaders 可注入接口和 @HeaderParam
参数注释。如果从资源方法中返回 javax.ws.rs.core.Response 对象,那么可以在响应中设置
HTTP 头。并且,可以在使用 MessageBodyWriter 接口来写实体时设置 HTTP 头。
您可以设置 HTTP 响应状态码以帮助客户机程序理解响应。虽然响应可以包含 XML
或其他格式的错误码,但客户机程序可以快速并且更轻松地理解 HTTP
响应状态码。HTTP 规范定义了多个通常被客户机所理解的状态码。
过程
- 要读取特定请求头,请添加 @javax.ws.rs.HeaderParam 注释式参数。
@javax.ws.rs.Path(“/bookstore/books/{bookID}”)
public class Book {
@javax.ws.rs.GET
public String retrieveSpecificBookInformation(@javax.ws.rs.HeaderParam(“User-Agent”) String theUserAgent) {
/* The book ID was sent in a HTTP request header with the name "bookID". */
}
}
- 要读取任何请求头,请使用 @javax.ws.rs.core.Context javax.ws.rs.core.HttpHeaders 注入式对象。
@javax.ws.rs.Path(“/bookstore/books/{bookID}”)
public class Book {
@javax.ws.rs.GET
public String retrieveSpecificBookInformation(@javax.ws.rs.core.Context HttpHeaders requestHeaders) {
/* Call methods on "requestHeaders" to get any request header sent by the client. */
List<String> bookIdValues = requestHeaders.getRequestHeader("User-Agent");
}
}
- 要设置响应状态码或头,请返回 javax.ws.rs.core.Response 对象并使用适当的状态码和头来构建响应。
@javax.ws.rs.Path(“/bookstore/books/{bookID}”) public class Book {
@javax.ws.rs.GET public javax.ws.rs.core.Response retrieveSpecificBookInformation() {
return Response.status(200).header("responseHeaderName", "responseHeaderValue").header("anotherResponseHeaderName", "foo").build();
}
}
结果
您已使用 HTTP 头为 JAX-RS Web 应用程序读取请求头以及设置响应状态码和头。