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メソッド