24.3.2 ビルトイン要求メソッド識別子

ここでは,JAX-RSエンジンがサポートする要求メソッド識別子について説明します。

<この項の構成>
(1) javax.ws.rs.DELETEアノテーション
(2) javax.ws.rs.GETアノテーション
(3) javax.ws.rs.HEADアノテーション
(4) javax.ws.rs.OPTIONSアノテーション
(5) javax.ws.rs.POSTアノテーション
(6) javax.ws.rs.PUTアノテーション

(1) javax.ws.rs.DELETEアノテーション

javax.ws.rs.DELETEアノテーションは,アノテートされたメソッドがHTTP DELETEリクエストを処理することを指定します。javax.ws.rs.DELETEアノテーションが使用できる対象を次に示します。

(2) javax.ws.rs.GETアノテーション

javax.ws.rs.GETアノテーションは,アノテートされたメソッドがHTTP GETリクエストを処理することを示します。javax.ws.rs.GETアノテーションが使用できる対象を次に示します。

(3) javax.ws.rs.HEADアノテーション

javax.ws.rs.HEADアノテーションは,アノテートされたメソッドがHTTP HEADリクエストを処理することを示します。javax.ws.rs.HEADアノテーションが使用できる対象を次に示します。

HTTP HEADリクエストを受けた場合,JAX-RSエンジンは次の優先順位で動作します。

  1. HEADアノテーションでアノテートされたメソッドがあれば呼び出す。
  2. 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アノテーションが使用できる対象を次に示します。

HTTP OPTIONSリクエストのためのJAX-RSエンジンの動作を次に示します。

  1. javax.ws.rs.OPTIONSアノテーションでアノテートされたメソッドを呼び出す。
  2. 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アノテーションが使用できる対象を次に示します。

(6) javax.ws.rs.PUTアノテーション

javax.ws.rs.PUTアノテーションは,アノテートされたメソッドがHTTP PUTリクエストを処理することを示します。javax.ws.rs.PUTアノテーションが使用できる対象を次に示します。