Menu Close

46.4. リソースメソッドの使用

概要

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

一般的な制約

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

  • パブリックでなければなりません。
  • 「HTTP 動詞の指定」 に記載されている HTTP メソッドアノテーションのいずれかが付けられている必要があります。
  • 「パラメーター」 に記載されているように、複数のエンティティーパラメーターを持つことはできません。

パラメーター

リソースメソッドパラメーターは、以下の 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 に設定されます。