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