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"という値が取得されます。