Menu Close

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 クラスによって実装されます。

サブリソースの実装に関する詳細は、「サブリソースの使用」 を参照してください。