Menu Close
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
クラスによって実装されます。
サブリソースの実装に関する詳細は、「サブリソースの使用」 を参照してください。