24.3.2 ビルトイン要求メソッド識別子
ここでは,JAX-RSエンジンがサポートする要求メソッド識別子について説明します。
- 〈この項の構成〉
(1) javax.ws.rs.DELETEアノテーション
javax.ws.rs.DELETEアノテーションは,アノテートされたメソッドがHTTP DELETEリクエストを処理することを指定します。javax.ws.rs.DELETEアノテーションが使用できる対象を次に示します。
-
ルートリソースクラスのpublicメソッド
-
サブリソースクラスのpublicメソッド
(2) javax.ws.rs.GETアノテーション
javax.ws.rs.GETアノテーションは,アノテートされたメソッドがHTTP GETリクエストを処理することを示します。javax.ws.rs.GETアノテーションが使用できる対象を次に示します。
-
ルートリソースクラスのpublicメソッド
-
サブリソースクラスのpublicメソッド
(3) javax.ws.rs.HEADアノテーション
javax.ws.rs.HEADアノテーションは,アノテートされたメソッドがHTTP HEADリクエストを処理することを示します。javax.ws.rs.HEADアノテーションが使用できる対象を次に示します。
-
ルートリソースクラスのpublicメソッド
-
サブリソースクラスのpublicメソッド
HTTP HEADリクエストを受けた場合,JAX-RSエンジンは次の優先順位で動作します。
-
HEADアノテーションでアノテートされたメソッドがあれば呼び出す。
-
HEADアノテーションでアノテートされたメソッドがなければ,GETアノテーションでアノテートされたメソッドを呼び出す。なお,そのメソッドが戻り値を返す場合は無視される。
HTTP HEADリクエストを処理するルートリソースクラスの例を次に示します。
package com.sample.resources; import javax.ws.rs.HEAD; import javax.ws.rs.Path; import javax.ws.rs.core.Response; //ルートリソースクラス @Path("/root") public class Resource { //リソースメソッド @HEAD public Response getValue() { String customHeader = "foo"; String customHeaderValue = "bar"; int httpStatus = 200; //ResponseBuilderを使用してResponseオブジェクトを構築する return Response.status(httpStatus).header(customHeader, customHeaderValue).build(); } }
ルートリソースクラスcom.sample.resources.Resourceを含むWebアプリケーション(WARファイル)のコンテキストルートが"example"で,Webアプリケーションが"sample.com"というホストで公開されているとします。この例では,URL"http://sample.com/example/root"に対するHTTP HEADリクエストは,getValue()メソッドにディスパッチされます。getValue()メソッドが返すResponseオブジェクトがエンティティボディを含んでいても無視されます。
(4) javax.ws.rs.OPTIONSアノテーション
javax.ws.rs.OPTIONSアノテーションは,アノテートされたメソッドがHTTP OPTIONSリクエストを処理することを示します。javax.ws.rs.OPTIONSアノテーションが使用できる対象を次に示します。
-
ルートリソースクラスのpublicメソッド
-
サブリソースクラスのpublicメソッド
HTTP OPTIONSリクエストのためのJAX-RSエンジンの動作を次に示します。
-
javax.ws.rs.OPTIONSアノテーションでアノテートされたメソッドを呼び出す。
-
javax.ws.rs.OPTIONSアノテーションでアノテートされたメソッドがなければ,Webリソースのアノテーションの情報を使用して,JAX-RSエンジンが自動的に応答する。
HTTP OPTIONSリクエストを処理するルートリソースクラスの例を次に示します。
package com.sample.resources; import javax.ws.rs.OPTIONS; import javax.ws.rs.Path; import javax.ws.rs.core.Response; //ルートリソースクラス @Path("/root") public class Resource { //リソースメソッド @OPTIONS public Response getValue() { String entity = "Some Contents"; String customHeader = "foo"; String customHeaderValue = "bar"; int httpStatus = 200; //ResponseBuilderを使用してResponseオブジェクトを構築する return Response.status(httpStatus).header(customHeader, customHeaderValue).entity(entity).build(); } }
ルートリソースクラスcom.sample.resources.Resourceを含むWebアプリケーション(WARファイル)のコンテキストルートが"example"で,Webアプリケーションが"sample.com"というホストで公開されているとします。この例では,URL"http://sample.com/example/root"に対するHTTP OPTIONSリクエストは,getValue()メソッドにディスパッチされます。
(5) javax.ws.rs.POSTアノテーション
javax.ws.rs.POSTアノテーションは,アノテートされたメソッドがHTTP POSTリクエストを処理することを示します。javax.ws.rs.POSTアノテーションが使用できる対象を次に示します。
-
ルートリソースクラスのpublicメソッド
-
サブリソースクラスのpublicメソッド
(6) javax.ws.rs.PUTアノテーション
javax.ws.rs.PUTアノテーションは,アノテートされたメソッドがHTTP PUTリクエストを処理することを示します。javax.ws.rs.PUTアノテーションが使用できる対象を次に示します。
-
ルートリソースクラスのpublicメソッド
-
サブリソースクラスのpublicメソッド