Menu Close
52.2.2. URI の使用
概要
URI コンテキストを使用する主な利点の 1 つは、サービスのベース URI と、選択したリソースの URI のパスセグメントにアクセスできることです。この情報は、URI に基づく処理の決定や応答の一部として返す URI の計算など、数多くの目的に便利です。たとえば、リクエストのベース URI に .com 拡張子が含まれる場合、サービスは米ドルの使用を決定できます。また、ベース URI に .co.uk 拡張子が含まれる場合は、英国ポンドの使用を決定できます。
UriInfo インターフェースは、URI の一部にアクセスするためのメソッドを提供します。
- ベース URI
- リソースパス
- 完全な URI
ベース URI の取得
ベース URI は、サービスがパブリッシュされるルート URI です。サービスの @Path
アノテーションで指定された URI の一部は含まれません。たとえば、例47.5「URI デコードの無効化」 で定義されたリソースを実装するサービスが http://fusesource.org に公開され、リクエストが http://fusesource.org/montersforhire/nightstalker?12 で行われた場合、ベース URI は http://fusesource.org になります。
表52.2「リソースのベース URI にアクセスするためのメソッド」 では、ベース URI を返すメソッドについて説明します。
パスの取得
リクエスト URI の パス 部分は、現在のリソースの選択に使用された URI の一部です。ベース URI は含まれませんが、URI に含まれる URI テンプレート変数およびマトリックスパラメーターが含まれます。
パスの値は、選択したリソースによって異なります。たとえば、リソースのパスの取得 で定義されるリソースのパスは以下のようになります。
-
rootPath
— /monstersforhire/ getterPath
— /mostersforhire/nightstalkerGET
リクエストは /monstersforhire/nightstalker で実行されました。putterPath
— /mostersforhire/911PUT
リクエストは /monstersforhire/911 で実行されました。
リソースのパスの取得
@Path("/monstersforhire/") public class MonsterService { @Context UriInfo rootUri; ... @GET public List<Monster> getMonsters(@Context UriInfo getUri) { String rootPath = rootUri.getPath(); ... } @GET @Path("/{type}") public Monster getMonster(@PathParam("type") String type, @Context UriInfo getUri) { String getterPath = getUri.getPath(); ... } @PUT @Path("/{id}") public void addMonster(@Encoded @PathParam("type") String type, @Context UriInfo putUri) { String putterPath = putUri.getPath(); ... } ... }
表52.3「リソースのパスにアクセスするためのメソッド」 では、リソースパスを返すメソッドについて説明します。
表52.3 リソースのパスにアクセスするためのメソッド
メソッド | 説明 |
---|---|
| デコードされた URI としてリソースのパスを返します。 |
|
リソースのパスを返します。 |
|
デコードされたパスを javax.WS.rs.core.pathSegment オブジェクトのリストとして返します。マトリックスパラメーターを含むパスの各部分は、リストの一意のエントリーに配置されます。
たとえば、リソースパス box/round#tall の場合は、 |
|
パスを javax.WS.rs.core.pathSegment オブジェクトのリストとして返します。マトリックスパラメーターを含むパスの各部分は、リストの一意のエントリーに配置されます。
たとえば、リソースパス box#tall/round の場合は、 |
完全な要求 URI の取得
表52.4「完全なリクエスト URI にアクセスするためのメソッド」 では、完全なリクエスト URI を返すメソッドについて説明します。リクエスト URI またはリソースの絶対パスを返すオプションがあります。違いは、リクエスト URI には URI に追加されたクエリーパラメーターが含まれ、絶対パスにはクエリーパラメーターが含まれていないことです。
表52.4 完全なリクエスト URI にアクセスするためのメソッド
メソッド | 説明 |
---|---|
|
クエリーパラメーターおよびマトリックスパラメーターを含む完全なリクエスト URI を |
クエリーパラメーターおよびマトリックスパラメーターを含む完全なリクエスト URI を | |
|
マトリックスパラメーターを含む完全なリクエスト URI を |
マトリックスパラメーターを含む完全なリクエスト URI を |
URI http://fusesource.org/montersforhire/nightstalker?12 を使用して行われるリクエストの場合は、getRequestUri()
メソッドは http://fusesource.org/montersforhire/nightstalker?12 を返します。getAbsolutePath()
メソッドは http://fusesource.org/montersforhire/nightstalker を返します。