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) { ... }
戻り値
リソースメソッドは、次のいずれかを返すことができます。
-
void
アプリケーションにエンティティープロバイダーがある Java クラス
エンティティープロバイダーの詳細は、51章エンティティーサポート を参照してください。
Response
オブジェクトResponse
オブジェクトの詳細は、「アプリケーションの応答の微調整」を参照してください。GenericEntity<T>
オブジェクトGenericEntity<T>
オブジェクトの詳細は、「汎用型情報を含むエンティティーの返答」を参照してください。
すべてのリソースメソッドは、HTTP ステータスコードをリクエスターに返します。メソッドの戻り値が void
である場合、または返された値が null
である場合、リソースメソッドは HTTP ステータスコードを 204
に設定します。リソースメソッドが null
以外の値を返すと、HTTP ステータスコードが 200
に設定されます。