46.3. ルートリソースクラス
概要
ルートリソースクラスは、JAX-RS で実装された RESTful Web サービスへのエントリーポイントです。サービスによって実装されるリソースのルート URI を指定する @Path
が付いています。そのメソッドは、リソースに対する操作を直接実装するか、サブリソースへのアクセスを提供します。
要件
クラスをルートリソースクラスに指定するには、次の基準を満たしている必要があります。
クラスには
@Path
アノテーションを付ける必要があります。指定されたパスは、サービスで実装されるすべてのリソースのルート URI です。ルートリソースクラスで、パスが widgets で、そのメソッドの 1 つが
GET
動詞を実装する場合は、widgets のGET
がメソッドを呼び出します。サブリソースで、その URI が {id} であると指定されている場合には、サブリソースの完全な URI テンプレートは widgets/{id} で、widgets/12 や widgets/42 などの URI に対して行われた要求を処理します。ランタイムによる呼び出すには、クラスにパブリックコンストラクターが必要です。
ランタイムは、コンストラクターのすべてのパラメーターの値を提供できる必要があります。コンストラクターのパラメーターには、JAX-RS パラメーターアノテーションで装飾されたパラメーターを含めることができます。パラメーターアノテーションの詳細については、47章リソースクラスとメソッドへの情報の受け渡し を参照してください。
-
クラスのメソッドの少なくとも 1 つに HTTP 動詞アノテーションまたは
@Path
アノテーションを付ける必要があります。
例
例46.3「ルートリソースクラス」 は、サブリソースへのアクセスを提供するルートリソースクラスを示しています。
例46.3 ルートリソースクラス
package demo.jaxrs.server; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; @Path("/customerservice/") public class CustomerService { public CustomerService() { ... } @GET public Customer getCustomer(@QueryParam("id") String id) { ... } @DELETE public Response deleteCustomer(@QueryParam("id") String id) { ... } @PUT public Response updateCustomer(Customer customer) { ... } @POST public Response addCustomer(Customer customer) { ... } @Path("/orders/{orderId}/") public Order getOrder(@PathParam("orderId") String orderId) { ... } }
例46.3「ルートリソースクラス」 のクラスは、ルートリソースクラスのすべての要件を満たしています。
クラスに @Path
アノテーションが付けられます。サービスによって公開されるリソースのルート URI は customerservice です。
クラスにはパブリックコンストラクターがあります。この場合には、簡素化するために、引数なしのコンストラクターが使用されます。
このクラスは、リソースに 4 つの HTTP 動詞それぞれを実装します。
このクラスは、getOrder()
メソッドを介してサブリソースへのアクセスも提供します。@Path
アノテーションを使用して指定されるサブリソースの URI は customerservice/order/id です。サブリソースは Order
クラスによって実装されます。
サブリソースの実装の詳細については、「サブリソースの操作」を参照してください。