47.2.3. 从 HTTP 邮件标头中注入数据


概述

在普通中使用请求消息中的 HTTP 标头会传递有关消息的一般信息,如何传输中处理它,以及预期响应的详细信息。虽然通常会识别和使用几个标准标头,但 HTTP 规范允许将任何名称/值对用作 HTTP 标头。JAX-RS API 提供了将 HTTP 标头信息注入资源实施的简单机制。

最常用的 HTTP 标头之一是 Cookie。Cookie 允许 HTTP 客户端和服务器在多个请求/响应序列之间共享静态信息。JAX-RS API 提供注释,将数据直接从 Cookie 注入资源实施。

从 HTTP 标头注入信息

javax.ws.rs.HeaderParam 注解用于将 HTTP 标头字段中的数据注入参数、字段或 bean 属性。它有一个参数,用于指定从中提取值并注入到资源实施中的 HTTP 标头字段的名称。关联的参数、字段或 bean 属性必须符合 “支持的数据类型”一节 中描述的数据类型。

注入 If-Modified-Since 标头 显示将 HTTP If-Modified-Since 标头注入类 最旧的 字段的代码。

注入 If-Modified-Since 标头

import javax.ws.rs.HeaderParam;
...
class RecordKeeper
{
  ...
  @HeaderParam("If-Modified-Since")
  String oldestDate;
  ...
}

从 Cookie 注入信息

Cookie 是特殊的 HTTP 标头类型。它们由一个或多个在第一个请求上传递给资源实施的名称/值对组成。在第一个请求后,cookie 会在提供程序和消费者之间返回并传给每条消息。只有消费者来生成请求,因此可以更改 Cookie。Cookie 通常用于跨多个请求/响应序列、存储用户设置和其他可保留的数据进行维护。

javax.ws.rs.CookieParam 注解从 Cookie 的字段中提取值并将其注入资源实施。它取一个参数,用于指定要从中提取值的 cookie 的字段名称。除了 “支持的数据类型”一节 中列出的数据类型外,带有 @CookieParam 的实体也可以是一个 Cookie 对象。

例 47.6 “注入 Cookie” 显示将 句柄 Cookie 值注入 CB 类中的字段的代码。

例 47.6. 注入 Cookie

import javax.ws.rs.CookieParam;
...
class CB
{
  ...
  @CookieParam("handle")
  String handle;
  ...
}

错误处理

如果在尝试使用 HTTP 消息注入注解 WebApplicationException 异常被嵌套原始异常时,会发生错误。WebApplicationException 异常的状态设置为 400

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.