JAX-RS コンテキスト・オブジェクトを使用した要求に関する詳細情報の取得
Java API for RESTful Web Services (JAX-RS) は、異なるタイプのコンテキストをリソース・クラスおよびプロバイダーに提供します。コンテキスト・オブジェクトを使用すると、要求の一部として送信される HTTP ヘッダーのディスカバーなどの要求情報にアクセスできます。コンテキスト・オブジェクトはまた、要求の評価および適切な応答を構築する便利な方法を提供します。
このタスクについて
REST (Representational State Transfer) アプリケーション・リソースは、呼び出し時に一部のアプリケーション・コンテキスト・データの検査が必要になる場合があります。例えば、HTTP GET 照会を処理するリソース・メソッドは、要求で指定された言語で応答を出力できるように Accept-Language HTTP ヘッダーがあるかどうか要求の HTTP ヘッダーを検査することがあります。
JAX-RS は、アプリケーション・リソースの有効範囲内でこのデータを取り出す単純な方法を定義します。適切なオブジェクトをリソース・メソッドのパラメーターまたはリソース・クラス内のフィールドとして @Context アノテーションを宣言すると、必要データがリソースに注入されます。JAX-RS 実装によってパラメーターまたはフィールドにコンテキスト・データが追加され、リソース・メソッドによってすべての必要なコンテキスト・データにアクセスできます。
インターフェース・タイプ | 説明 |
---|---|
javax.ws.rs.core.UriInfo | UriInfo インターフェースは、要求で指定される完全な URI を提供します。このインターフェースは、要求 URI に一致するリソースを検査することもできます。 |
javax.ws.rs.core.Request | Request インターフェースは、POST または GET などの要求に関する情報を提供します。このインターフェースは、要求のエンティティー・タグに基づいて前提条件を評価することもできます。 |
javax.ws.rs.core.HttpHeaders | HttpHeaders インターフェースは、すべての HTTP ヘッダーへの読み取り専用アクセスを提供します。 |
javax.ws.rs.core.SecurityContext | SecurityContext インターフェースは、認証方式やセキュリティー・プリンシパルなどの読み取り専用セキュリティー情報を提供します。 |
javax.ws.rs.ext.Providers | Providers インターフェースによって、ContextResolver、ExceptionMapper、MessageBodyWriter、または MessageBodyReader の実装を取り出すことができます。 |
これらの JAX-RS インターフェース・タイプに加えて、JAX-RS 仕様に記述されているように、@Context アノテーションを使用して Web コンテナー・タイプ (javax.servlet.http.HttpServletRequest など) を注入することができます。
手順
タスクの結果
要求に関する詳細情報を得るためのコンテキスト・オブジェクトを JAX-RS Web アプリケーションに実装できました。