46.4. リソースメソッドの操作

概要

リソースメソッドは、JAX-RS アノテーションを使用してアノテーションを付けます。それらには、メソッドが処理する要求のタイプを指定する HTTP メソッドアノテーションの 1 つが含まれます。JAX-RS は、リソースメソッドにいくつかの制約を課します。

一般的な制約

すべてのリソースメソッドは、次の条件を満たす必要があります。

  • 公開されている。
  • 「HTTP 動詞の指定」 で記載されている HTTP メソッドアノテーションの 1 つが付けられている。
  • 「パラメーター」 で記載のエンティティーパラメーターを 1 つ以上指定しない。

パラメーター

リソースメソッドのパラメーターには、次の 2 つの形式があります。

  • エンティティーパラメーター: エンティティーパラメーターにはアノテーションが付けられていません。このパラメーターの値は、要求エンティティーの本体からマッピングされます。エンティティーパラメーターは、アプリケーションにエンティティープロバイダーがあるタイプであればどれにでも指定できます。通常、これらは JAXB オブジェクトです。

    重要

    リソースメソッドは、エンティティーパラメーターを 1 つだけ 指定できます。

    エンティティープロバイダーの詳細は、51章エンティティーサポート を参照してください。

  • アノテーション付きパラメーター: アノテーション付きパラメーターは、JAX-RS アノテーションの 1 つを使用し、パラメーターの値が要求からどのようにマップされるかを指定します。通常、パラメーターの値は、要求 URI の一部からマップされます。

    要求データをメソッドパラメーターにマッピングするための JAX-RS アノテーションの使用の詳細は、47章リソースクラスとメソッドへの情報の受け渡し を参照してください。

例46.4「有効なパラメーターリストを持つリソースメソッド」 は、パラメーターリストが有効なリソースメソッドを示しています。

例46.4 有効なパラメーターリストを持つリソースメソッド

@POST
@Path("disaster/monster/giant/{id}")
public void addDaikaiju(Kaiju kaiju,
                        @PathParam("id") String id)
{
  ...
}

例46.5「パラメーターリストが無効なリソースメソッド」 は、パラメーターリストが無効なリソースメソッドを示しています。アノテーションが付けられていないパラメーターが 2 つあります。

例46.5 パラメーターリストが無効なリソースメソッド

@POST
@Path("disaster/monster/giant/")
public void addDaikaiju(Kaiju kaiju,
                        String id)
{
  ...
}

戻り値

リソースメソッドは、次のいずれかを返すことができます。

すべてのリソースメソッドは、HTTP ステータスコードをリクエスターに返します。メソッドの戻り値が void である場合、または返された値が null である場合、リソースメソッドは HTTP ステータスコードを 204 に設定します。リソースメソッドが null 以外の値を返すと、HTTP ステータスコードが 200 に設定されます。