意味
RESTライブラリ内では、HTTP要求または応答のコンテンツにIF_REST_ENTITYインターフェースを介してアクセスできます。このインターフェースへの参照は、メソッドIF_REST_MESSAGE〜GET_ENTITYを呼び出すことにより、CL_REST_REQUESTおよびCL_REST_RESPONSEのインスタンスから取得できます。
RESTライブラリは、特定のコンテンツタイプ(たとえば、application / x-www-form-urlencoded)のシリアル化および逆シリアル化機能を提供するエンティティプロバイダーの小さなセット(ABAPパッケージSREST_EXTを参照)を提供します。
クラスCL_REST_ENTITY_PROVIDERから派生することにより、RESTアプリケーションが独自のエンティティプロバイダーを作成することができます。この場合、メソッドWRITE_TOは、このメソッドに渡されるRESTエンティティにフォーマットされたデータを設定するため、主に重要です。
する方が良いかどうか
-
ビジネスデータの手動シリアル化または逆シリアル化を実行し(たとえば、単純な変換によって)、RESTエンティティにコンテンツを直接設定するか、または
-
または、シリアル化または逆シリアル化のための独自のエンティティプロバイダーを作成する
RESTアプリケーションのユースケースによって異なります。複雑なフレームワーク(ODataなど)は独自のエンティティプロバイダーの恩恵を受けますが、小さなRESTアプリケーション(各リソースを異なる方法でシリアル化できる場合)は最初のオプションを選択する方がよい場合があります。
エンティティプロバイダーのユースケース:
-
シリアル化のシナリオシリアル化の目的で、各エンティティプロバイダーが最初に作成され、後でシリアル化するためにデータがその中に設定されます。これらのデータは任意のタイプまたは形式にすることができ、追加のセッターメソッド(SET_ENTITY_HEADER、SET_CONTENT_TYPEなど)またはコンストラクター(IF_REST_ENTITYオブジェクトの受け入れなど)を使用して直接設定できます。最終的なシリアル化では、IF_REST_ENTITY_PROVIDER〜WRITE_TOメソッドが、インターフェイスIF_REST_ENTITYのエンティティで呼び出されます。
-
デシリアライズのシナリオデシリアライズの場合、エンティティプロバイダーには、デシリアライズするエンティティセットを挿入するためのセッターまたは適切なコンストラクターと、RESTエンティティから抽出されたデータを公開するためのゲッターメソッドが必要です。
IF_REST_ENTITY
インターフェイスIF_REST_ENTITYは、HTTPコンテンツからデータにアクセスするためのメソッドを提供します。
-
設定:コンテンツタイプ、言語、圧縮、場所
-
有効期限と変更日
-
コンテンツヘッダーフィールド
-
バイナリデータまたはテキストデータとしてのコンテンツ。
CL_REST_ENTITY
インターフェイスIF_REST_ENTITYの実装。
IF_REST_ENTITY_PROVIDER
インターフェイスIF_REST_ENTITY_PROVIDERは、エンティティプロバイダーによって実装される必要があるメソッドの基本セットを定義します。これらのメソッドは、ETAG、ヘッダーフィールド、および(非常に重要な)WRITE_TOメソッドを設定および取得して、RESTエンティティインターフェイスIF_REST_ENTITY(SET_BINARY_DATA、GET_BINARY_DATA、SET_STRING_DATA、GET_STRING_DATA)の異なるメソッドを使用してこのエンティティプロバイダー内の情報をRESTエンティティに書き込むためのものです。
CL_REST_ENTITY_PROVIDER
クラスCL_REST_ENTITY_PROVIDERは、インターフェースIF_REST_ENTITY_PROVIDERのデフォルトの実装です。このクラスには、基本的に、ヘッダーフィールド値を格納するためのテーブル属性と、ヘッダーフィールドを取得/設定するためのメソッド実装のみが含まれています。
CL_REST_FORM_DATA
mimeタイプapplication/x-www-form-urlencodedとしてフォーマットされたHTTPコンテンツをフォームフィールドのリストに変換します。その逆も同様です。
シリアル化の場合、CL_REST_FORM_DATAインスタンスを作成する必要があり、フォームフィールドはSET_FORM_FIELDメソッドで設定できます。その後、WRITE_TOメソッドを使用して、フォームフィールドをエンティティセットに書き込むことができます。
デシリアライズの場合、CL_REST_FORM_DATAのコンストラクターをエンティティセットで呼び出す必要があります。メソッドGET_FORM_FIELD、GET_FORM_FIELDS、およびHAS_FORM_FIELDフォーム項目を使用して、逆シリアル化されたデータを読み取ることができます。
CL_REST_MP_FORM_DATA
CL_REST_MP_FORM_DATAは、CL_REST_FORM_DATAプロセッサを拡張して、mimeタイプmultipart/form-dataのコンテンツを処理できるようにします。このmimeタイプは、単純なHTMLフォームフィールド値(application / x-www-form-urlencodedなど)と、ファイルのアップロードまたはダウンロード用の1つ以上のファイルを転送するために使用できます。
CL_REST_MP_FORM_DATAは、CL_REST_FORM_DATAを継承し、シリアル化する必要のあるファイルを設定し、逆シリアル化されたファイルにアクセスするための追加のメソッドを提供します。
CL_REST_HTTP_REQ_PROV
mimeタイプのapplication/httpとしてフォーマットされたHTTPコンテンツを有効なRESTリクエストオブジェクトに変換し、その逆も同様です。コンテンツのフォーマットに注意してください。コンテンツが正しくないと、逆シリアル化時にHTTPリクエストが空になります(たとえば、空の行が欠落している、または追加されているなど)。このメソッドのユースケースは、マルチパートリクエスト処理です(マルチパートリクエストを参照)。
シリアル化の場合、メソッドSET_REQUESTを使用してREST要求を設定し、提供されたエンティティー(インターフェースIF_REST_ENTITY)を使用してWRITE_TOを呼び出して、要求をシリアル化します。
デシリアライズの場合、CL_REST_HTTP_REQ_PROVのコンストラクターの入力としてHTTPコンテンツを含むエンティティを使用し、GET_REQUESTメソッド(インターフェースIF_REST_REQUESTを持つオブジェクト)を使用してドキュメントを取得します。
CL_REST_HTTP_RESP_PROV
mimeタイプ「application/http」としてフォーマットされたHTTPコンテンツを有効なREST応答オブジェクトに変換し、その逆も同様です。コンテンツのフォーマットに注意してください。コンテンツが正しくないと、逆シリアル化時にHTTPリクエストが空になります(たとえば、空の行が欠落している、または追加されているなど)。このメソッドのユースケースは、マルチパートリクエスト処理です(マルチパートリクエストを参照)。
シリアル化の場合、メソッドSET_RESPONSEを使用してREST応答を設定し、提供されたエンティティ(インターフェースIF_REST_ENTITY)を使用してWRITE_TOを呼び出して、応答をシリアル化します。
デシリアライズの場合は、HTTPコンテンツを含むエンティティをCL_REST_HTTP_RESP_PROVのコンストラクターの入力として使用し、GET_RESPONSEメソッドを使用してドキュメントを取得します。