コンテンツ・タイプの例

以下の例は、HTTP 要求および応答でのコンテンツの処理のまとめです。これらの例は、概念を示すことを目的としており、HTTP プロトコルの正確性は 意図しておりません。

HTTP GET 要求と DELETE 要求では、標準のエンコードを使用して、URI に すべての入力パラメーターが指定されます。そのような要求には本体がありません。これらの要求のコンテンツ・タイプは、常に x-www-form-urlencoded です。 これは、HTTP プロトコルの GET 要求と DELETE 要求で使用できるのは、このコンテンツ・タイプのみであるためです。クライアントでは、Accept ヘッダーを指定することにより、 応答で受け入れることができるコンテンツ・タイプを示します。

次の GET 要求では、パラメーターは URI で照会ストリングとして渡されます。応答で受け入れることができるコンテンツ・タイプは、Accept ヘッダー・フィールド に application/xml と指定されています。

GET http://www.myHost.com:9080/myApp/rest/myCustomer?name=john%20doe
Accept: application/xml

応答を促す要求の種類によらず、すべての HTTP 応答の本体に、応答のデータが 含まれています。応答は、ヘッダー・フィールドから開始されます。応答の Content-Type ヘッダー・フィールドにより、下の本体に含まれている データのタイプがクライアントに通知されます。HTTP では、応答でさまざまなコンテンツ・タイプが許可されていますが、ZIETrans JAX-RS で は application/xml および application/json のみをサポートしています。ヘッダー・フィールド とブランク行 1 行の後で本体が開始されており、指定されているフォーマットのデータが 含まれています。

下の GET 応答の Content-Type ヘッダー・フィールドでは、 応答本体に含まれているデータのタイプを指定しています。

Content-Type: application/xml

<customer>
 <firstname>John</firstname>
 <lastname>Doe</lastname>
 <accountnumber>111111</accountnumber>
</customer>

慣例により、POST 要求では、通常は、何らかのオブジェクトの作成を要求します。要求を実行するために必要なデータは要求本体に含めて送信されます。Content-Type は、要求データのフォーマットをサーバーに示します。Accept ヘッダーは、ここでも、必要な応答フォーマットを指定します。

下の POST 要求では、コンテンツ・タイプは、Content-Type ヘッダー・フィールド に application/xml であると指定されており、コンテンツが要求本体に指定されています。Accept ヘッダー・フィールドでは、応答で受け入れ可能なデータの フォーマットに application/json が指定されています。

POST http://www.myHost.com:9080/myApp/rest/myCustomer
Content-Type: application/xml
Accept: application/json

<customer>
 <firstname>Jane</firstname>
 <lastname>Doe</lastname>
 <accountnumber>222222</accountnumber>
</customer>

下の POST 応答では、応答のフォーマットは、要求で使用されているフォーマットと 一致する必要がないことが分かります。

Content-Type: application/json

{"message":{
  "type": "resultCode",
  "value": "Jane Doe account created successfully"
}} 
ZIETrans JAX-RS 出力フォーマットの規則では、Accept HTTP 要求ヘッダーに指定されているフォーマットを使用して応答しますが、次に示すように URI 照会パラメーター alt を使用してクライアントがフォーマットを指定している場合は除きます。
POST http://www.myHost.com:9080/myApp/rest/myCustomer?alt=application/xml