46.3. ルートリソースクラス

概要

ルートリソースクラスは、JAX-RS で実装された RESTful Web サービスへのエントリーポイントです。サービスによって実装されるリソースのルート URI を指定する @Path が付いています。そのメソッドは、リソースに対する操作を直接実装するか、サブリソースへのアクセスを提供します。

要件

クラスをルートリソースクラスに指定するには、次の基準を満たしている必要があります。

  • クラスには @Path アノテーションを付ける必要があります。

    指定されたパスは、サービスで実装されるすべてのリソースのルート URI です。ルートリソースクラスで、パスが widgets で、そのメソッドの 1 つが GET 動詞を実装する場合は、widgetsGET がメソッドを呼び出します。サブリソースで、その URI が {id} であると指定されている場合には、サブリソースの完全な URI テンプレートは widgets/{id} で、widgets/12widgets/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 クラスによって実装されます。

サブリソースの実装の詳細については、「サブリソースの操作」を参照してください。