application/http

MIME 型 application/http

[1] application/http は、 HTTP メッセージの列のMIME型です。

仕様書

文脈

[9] どのような場面でこの MIME型が使われることがあるのかは不明です。

[12] OData非同期の処理結果の報告に application/http を使っています >>11。また HTTP 応答で転送される multipart/mixed本体部分としても message/http を使っています >>13

[15] Google BigQuery は複数の要求をまとめて送信したり、 それに対する応答を受信したりするために application/httpmultipart/mixed本体部分として使っています >>14

[16] 例示の要求要求行プロトコルの版が含まれていません。 例示の誤りなのか実際にそう動作しているのかは不明です。

引数

[5] 引数は次の2つが定義されており、いずれも省略可能です >>4

CTE

[6] CTEbinary とされており、 プロトコルによっては何らかの符号化が必要です >>4

[7] すなわち、 7bit8bit は不適切です。

本体

[8] 本体は、1つ以上の要求メッセージの列か、応答メッセージの列です >>4

[17] HTTP/2 を扱えるのかは不明です。

処理モデル

[10] 処理モデルは特に規定されておらず、どのように利用するべきなのか不明です。

関連

[2] 類似の媒体型として、 message/http があります。こちらは RFC1945 から規定されていました。

message/* では、 MIME の規定により、行長に制限があるとか、生でない CTE を使ってはいけないとかで、転送することが不可能な HTTP メッセージが存在します。 一見転送できそうに見えても、 CR だけとか LF だけとかの改行が含まれていて、正規化されてしまった結果 HTTP メッセージとしては (Content-Length とかと) 不整合なものになってしまう可能性があります。 そんなわけで application/http が用意されました。

おそらく、ほとんどすべての場合で、 HTTP メッセージには message/http ではなく application/http を使う方が適切でしょう。

[3] もう一つの重要な message/http との違いとして、 application/http ではパイプライン接続のようにメッセージ群を一つの実体に含めることができます。 (但し、要求のメッセージ群だけまたは応答のメッセージ群だけの連続でないといけません。混合は不可とされています。)

[18] Batching Requests  |  Gmail API  |  Google Developers ( 版) <https://developers.google.com/gmail/api/guides/batch>

A batch request is a single standard HTTP request containing multiple Gmail API calls, using the multipart/mixed content type. Within that main HTTP request, each of the parts contains a nested HTTP request.

Each part begins with its own Content-Type: application/http HTTP header. It can also have an optional Content-ID header. However, the part headers are just there to mark the beginning of the part; they're separate from the nested request. After the server unwraps the batch request into separate requests, the part headers are ignored.

[19] Google アナリティクス API リクエストのバッチ処理  |  アナリティクス Real Time Reporting API  |  Google Developers ( ()) <https://developers.google.com/analytics/devguides/reporting/realtime/v3/batching>

バッチ リクエストは、multipart/mixed コンテンツ タイプを使用した、複数の Google アナリティクス API 呼び出しを含む 1 つの標準的な HTTP リクエストです。このメインの HTTP リクエストを構成する各パートには、ネストされた HTTP リクエストが含まれます。

各パーツはそれぞれ Content-Type: application/http HTTP ヘッダーで始まり、オプションの Content-ID ヘッダーを指定することもできます。ただし、パーツヘッダーはパーツの開始箇所を示すためだけに存在していて、ネストされたリクエストとは分かれています。サーバーが一括リクエストを別々のリクエストにアンラップした後、パーツヘッダーは無視されます。

各パーツのボディ自体が完全な HTTP リクエストで、独自の動詞、URL、ヘッダー、ボディが含まれます。HTTP リクエストには URL のパス部分のみを含める必要があり、完全な URL は、一括リクエストでは許可されていません。