使用する
条件付き処理を使用するRESTサービスの説明については、条件付き処理のセクションで詳しく説明しています。このセクションでは、この例で使用される条件付き処理の実装についてのみ説明します。
プロセス
HTTP ETagに基づいて条件付き処理を提供するための処理クラスを有効にするには、インスタンス属性MV_CONDITIONAL_HANDLINGを値ABAP_TRUE(実際にはハンドラーの基本クラスCL_REST_RESOURCEのデフォルト値)に設定します。独自の条件付き処理を実装するには、メソッドGET_CONDIGIONAL_INFOをハンドラークラスで再定義する必要があります。そうしないと、ETagの読み取りのためにGETメソッドが暗黙的に呼び出されます。ただし、これにより、返されるデータが取得され、パフォーマンスが低下する可能性があります。
条件付き情報メソッドのシグネチャは、条件付きリクエストを処理するためにRESTライブラリに必要な値を提供します。
メソッドのパラメーターは次のとおりです。
-
IV_METHOD:現在処理されているリクエストのHTTPメソッド。
-
EV_EXISTING:ABAP_TRUEが返される場合は、要求されたリソースが見つかったことを示します。POST呼び出しでは、このパラメータは常にABAP_FALSEに設定されます。
-
EV_STATUS:指定されたHTTPメソッドに基づくHTTP応答コードと、クライアント要求によって提供されたリソース識別情報。
-
ES_ETAG:読み取りが成功した場合の、要求されたリソースのETag値が含まれます。
-
EV_MODIFICATION_DATA:要求されたリソースの変更日が含まれます。
-
EV_GET_RESPONSE:ABAP_TRUEを使用して、ETag処理中に応答がすでに作成されていることを示します。つまり、RESTライブラリは、クラスの応答メンバーに応答がすでに設定されていることを想定しています。この処理の背後にある意図は、条件付き処理とデータ取得が強く結びついているため、後続のデータ読み取りまたは変更呼び出しをライブラリーによって保存できることです。ETag処理とリソースデータにこのような厳密な概念リンクがなく、データアクセスがより複雑な場合は、このパラメータの戻り値をABAP_FALSEに設定して、結果のデータが準備されていないことをRESTライブラリに示す必要があります。このメソッドでの条件付き処理。
このメソッドの詳細については、条件付き処理の実装を参照してください。
この例で使用される条件付き処理の実装は次のとおりです。
サポートされているHTTPメソッド(GET、PUT、DELETE)の場合、次のメソッドGET_ETAG_FOR_REQUESTは、要求されたリソースの現在のETagを返します。実際のETag計算は、要求された自動車リソースの変更日に基づいています。
メソッドGET_ETAGは、ETag値の単純なフォーマットを実行するため、ここではあまり重要ではありません。この例のすべてのETagには、弱いフラグが付けられています(条件付き処理を参照)。