UriInfo オブジェクトを使用した URI に関する情報の取得
Java™ API for RESTful Web Services (JAX-RS) では、UriInfo オブジェクトを使用して要求ヘッダーにアクセスできます。UriInfo オブジェクトは、要求の URI 情報の検索および構築を可能にする手段を提供します。
このタスクについて
注入された UriInfo オブジェクトを JAX-RS ランタイム環境で使用すると、相対 URI および絶対 URI の情報が認識され、変更することができます。@javax.ws.rs.core.Context アノテーションは、コンテキスト・オブジェクトが注入されたことを示します。javax.ws.rs.core.UriInfo インターフェースは、注入対象となるオブジェクトのインターフェースです。UriInfo オブジェクトを使用すると、UriBuilder クラスを使用して絶対 URL および相対 URL を構築できます。
手順
タスクの結果
リソース・メソッドに URI を使用し、UriInfo オブジェクトを使用して URI 情報を構築することができます。
例
次の例では、ブック・リソースのリストが以下の URL で入手可能です: http://<hostname>:<port>/<context
root>/<servlet path>/books。このブック・リソースを参照するために別のリソースが必要な場合は、URL をアプリケーションにハードコーディングするのではなく、UriInfo オブジェクトを使用して、URI を動的に構築する UriBuilder クラスをアプリケーションのリソースに戻します。
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.core.MediaType;
@Path ( "/books" )
public class BookListResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getBookList() {
return "a list of books";
}
}
import java.util.List;
import java.util.Locale;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.core.MediaType;
@Path ( "/allitems" )
public class AllItemsListResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getLocationOfAllItems(@Context UriInfo uriInfo) {
URI bookListURI = uriInfo.getBaseUriBuilder().path(BookListResource.class).build();
return Response.ok("The URI to the book list is: " + bookListURI..toASCIIString()).build();
}
}