Menu Close
47.2.3. HTTP メッセージヘッダーからのデータの注入
概要
通常の使用法では、リクエストメッセージ内の HTTP ヘッダーは、メッセージに関する一般的な情報、転送中の処理方法、および予想される応答の詳細を渡します。いくつかの標準ヘッダーが一般的に認識され使用されますが、HTTP 仕様では、任意の名前と値のペアを HTTP ヘッダーとして使用できます。JAX-RS API は、HTTP ヘッダー情報をリソース実装に注入する簡単なメカニズムを提供します。
最も一般的に使用される HTTP ヘッダーの 1 つがクッキーです。クッキーを使用すると、HTTP クライアントとサーバーは複数のリクエスト/レスポンスシーケンス間で静的情報を共有できます。JAX-RS API は、クッキーからリソース実装に直接データをインジェクトするアノテーションを提供します。
HTTP ヘッダーからの情報の注入
javax.ws.rs.HeaderParam
アノテーションは、HTTP ヘッダーフィールドのデータをパラメーター、フィールド、または Bean プロパティーに注入するために使用されます。これには、値が抽出され、リソース実装にインジェクトされる HTTP ヘッダーフィールドの名前を指定する単一のパラメーターがあります。関連付けられたパラメーター、フィールド、または Bean プロパティーは、「サポートされるデータ型」 で説明されているデータ型に準拠する必要があります。
If-Modified-Since ヘッダーの注入 は、HTTP If-Modified-Since
ヘッダーの値をクラスの oldestDate
フィールドに注入するコードを示しています。
If-Modified-Since ヘッダーの注入
import javax.ws.rs.HeaderParam; ... class RecordKeeper { ... @HeaderParam("If-Modified-Since") String oldestDate; ... }
クッキーからの情報の注入
クッキーは特殊な型の HTTP ヘッダーです。これらは、最初のリクエストでリソース実装に渡される 1 つ以上の名前と値のペアで構成されています。最初のリクエストの後、クッキーは各メッセージとともにプロバイダーとコンシューマーの間で送受信されます。リクエストを生成するため、コンシューマーのみがクッキーを変更できます。クッキーは、一般に、複数のリクエスト/レスポンスシーケンスにわたってセッションを維持し、ユーザー設定および永続化できるその他のデータを格納するために使用されます。
javax.ws.rs.CookieParam
アノテーションは、クッキーのフィールドから値を抽出し、これをリソース実装に注入します。これは、値を抽出するクッキーのフィールドの名前を指定する単一のパラメーターを取ります。「サポートされるデータ型」 に示されているデータ型に加え、@CookieParam
が付けられたエンティティーも Cookie
オブジェクトになることができます。
例47.6「クッキーの注入」 は、handle
クッキーの値を CB
クラスのフィールドに注入するためのコードを示しています。
例47.6 クッキーの注入
import javax.ws.rs.CookieParam; ... class CB { ... @CookieParam("handle") String handle; ... }
エラー処理
HTTP メッセージインジェクションアノテーションのいずれかを使用してデータをインジェクトしようしたときにエラーが発生すると、元の例外をラップする WebApplicationException 例外が生成されます。WebApplicationException 例外のステータスは 400
に設定されます。