意味
1つのリクエストエンティティで複数のコンテンツ(つまり、サーバーにファイルをアップロードする場合は複数のファイル)を転送することができます。これは、マルチパートエンティティと呼ばれます。そうすることで、RESTクライアントは、一連の単一要求をサーバーに送信するオーバーヘッドを節約できます(これにより、ネットワークの待ち時間などが短縮されます)。
RESTライブラリは、これらのマルチパートコンテンツの構築と利用を容易にする機能を提供します。
-
複数のデータを1つのエンティティにパック/アンパックするためのサポート
-
複数の完全修飾HTTP要求/応答を1つのエンティティに送信するためのサポート。完全修飾HTTPリクエスト/レスポンスとは、リクエストライン/ステータスライン+HTTPヘッダー+HTTPエンティティを意味します。
この章では、ポイント2に焦点を当てます。ポイント1については、クラスCL_REST_MP_FORM_DATAのドキュメントを参照してください。
-
マルチパートリクエストは、エンティティ内にいくつかのパックされたRESTリクエストを含むRESTリクエストです。
-
マルチパート応答は、エンティティ内にいくつかのパックされたREST応答を含むREST応答です。
複数の完全修飾HTTP要求/応答を送信する特徴は次のとおりです。
-
マルチパートリクエストのURIは、単一のリソースを識別しなくなりましたが、複数のリクエストに対応するため、汎用的です。
-
マルチパートリクエストのHTTPエンティティには、それぞれが単一のRESTリクエストである複数のパートが含まれています。マルチパートリクエスト内では任意のメソッドセットを使用できるため、HTTP POSTメソッドを定期的に使用して、このようなマルチパートリクエストをサーバーに転送します。
これには、ネットワーク中間体(プロキシ、リバースプロキシ、キャッシュなど)の場合、操作が透過的ではなくなるため、この種の要求ではそれらを利用できないという欠点があります(たとえば、キャッシュの目的で)。
-
指定されたシーケンスの複数のリクエストは異なる結果をもたらす可能性があるため、サーバーには全体的な結果をクライアントに報告する手段はありませんが、結果をHTTPエンティティ内にコーディングします。これにより、ネットワーク中間体からも見えなくなります。
マルチパート処理の特性を緩和するために、マルチパート要求をサーバープロキシに送信すると、サーバープロキシがそれを個別の要求に分割して、処理が再び単一の要求処理になり、各URIが一意のHTTPメソッドを持つ単一のリソースを再度識別します。