24.4.1 javax.ws.rs.core.UriInfo

javax.ws.rs.core.UriInfoは,URIを構成する各コンポーネント(クエリパラメタやマトリクスパラメタなど)を保持するコンテキストです。HTTPリクエストごとの情報を提供します。なお,javax.ws.rs.core.UriInfoの各メソッドで取得できるのは,正規化後の情報です。

ルートリソースクラスのフィールドにインジェクトされるjavax.ws.rs.core.UriInfoコンテキストの使用例を次に示します。

package com.sample.resources;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;

//ルートリソースクラス
@Path("/root")
public class Resource {
 //Contextアノテーションを使用してUriInfoをインジェクトするフィールド
 private @Context UriInfo uriInfo;

 //リソースメソッド
 @GET
 public String getValue() {
   String value = this.uriInfo.getQueryParameters().getFirst("query");
   return value;
 }
}

ルートリソースクラスcom.sample.resources.Resourceを含むWebアプリケーション(WARファイル)のコンテキストルートが"example"で,Webアプリケーションが"sample.com"というホストで公開されているとします。この例で,URL"http://sample.com/example/root?query=10"に対するHTTP GETリクエストでは,まずuriInfoフィールドにjavax.ws.rs.core.UriInfoコンテキストがインジェクトされ,その後HTTP GETリクエストを処理できるgetValue()メソッドが呼び出されます。このため,getValue()メソッドでuriInfoフィールドからクエリパラメタ"query"を取得すると"10"という値が取得されます。