手順
RESTサービスによって提供されるすべてのリソースURIは、URIテンプレートを介してABAP処理クラスに割り当てる必要があります。RESTサービスによって提供されるリソースにクラスを割り当てるには、固定数のURIテンプレートをABAPクラスにアタッチします。アタッチされたABAPクラスは、指定されたURIとRESTクライアントによって使用されるHTTPコマンドに基づいてリソースへのアクセスを実装します。この例では、リソースはタイプCarです。
ABAP RESTアプリケーションを作成する最も簡単な方法は、ライブラリクラスCL_REST_HTTP_HANDLERから派生したABAPクラスを実装することです。このクラスは、インターフェースIF_REST_APPLICATIONおよびIF_HTTP_EXTENSIONを実装します。最初のインターフェースは、RESTアプリケーションの処理クラスを識別するためにRESTフレームワークによって使用されます。2番目のインターフェースは、ICFフレームワークがHTTPREST要求を処理するために使用するために使用されます。
次の手順を実行します。
-
ABAPクラス(このチュートリアルではCL_REST_TEST_APPLICATIONという名前)を作成し、そのスーパークラスをCL_REST_HTTP_HANDLERに設定します。
-
クラスCL_REST_HTTP_HANDLERは、インターフェースメソッドIF_REST_APPLICATION〜GET_ROOT_HANDLERを提供します。このメソッドは、リソースURIテンプレートをRESTアプリケーションによって提供される処理クラスにアタッチします。
これは、このチュートリアルでプロセッサクラスをURIテンプレートにアタッチするためのメソッドIF_REST_APPLICATION〜GET_ROOT_HANDLERのコーディングです。
-
このコードは、RESTライブラリルータークラスCL_REST_ROUTERのインスタンスを作成します。
-
いくつかのリソースURIテンプレートは、メソッドATTACHを介して、パラメータIV_HANDLER_CLASSで指定されたABAP処理クラスにアタッチされます。
-
CL_REST_SAMPLE_CAR
-
CL_REST_SAMPLE_CARS
-
-
リソーステンプレートは、パラメータIV_TEMPLATEを介して指定されます。このパラメータには、リソース識別テンプレート(ABAP正規表現構文を使用)が含まれていますが、RESTクライアントで使用される完全な呼び出しURIは含まれていません。URIのルート部分は、ICFを介して指定されたservice-URIによって決定されるため、完全な要求URIは、service-URIとリソース部分を連結したものです。
-
処理クラスがアタッチされたルーティングインスタンスが返され、呼び出し処理中にRESTライブラリで使用できるようになります。
リソーステンプレート/Car/ {ID:[1-9] [0-9] *}は、Car型のリソースエンティティを1より大きい整数で識別します。つまり、URI位置で、正規式は次のようになります。配置されている場合、パス要素として1以上の整数値が期待されます。
リソース識別子は、例ではIDという名前の仮パラメーターを指定することにより、REST処理クラスで使用できるようになります。実際に呼び出されるメソッドは、クライアント要求中に使用されるHTTPメソッドによって異なり、このチュートリアルの後続のセクションで詳細に処理されます。現在サポートされているHTTPメソッドは、GET、POST、PUT、DELETE、HEAD、OPTIONSです。
リソーステンプレートリストに複数の一致がある場合、結果のセットは、RESTfulWebサービスの仕様JavaAPIに従ってソートされます(JAX-RSバージョン1.1を参照してください。http://download.oracle.com/otndocs/jcp/jaxrs-1.1-mrel-eval-oth-JSpec/)そしてソートされたリストの最初の一致が選択されます。