意味
コンテンツネゴシエーションは、HTTP仕様で定義されているメカニズムです(http://www.w3.org/Protocols/rfc2616/rfc2616-sec12.html#sec12)ドキュメントのさまざまなバージョンを提供できるようにするか、RESTコンテキストで、同じURIでさまざまなリソース表現を使用できるようにします。コンテンツネゴシエーションは、複数の表現が利用可能な場合に、特定のリソースに最適な表現を選択するプロセスです。
一般的に、利用可能なネゴシエーションには3つのタイプがあります。
-
サーバー主導のネゴシエーション:
RESTサーバーがリソースに最適な表現を選択する場合、これはサーバー駆動型コンテンツネゴシエーションと呼ばれます。
-
クライアント(ユーザーエージェント)主導の交渉:
最適なリソース表現の選択は、ユーザーエージェントによって行われます。これは、特定のリソースでサポートされている形式を含む、オリジンサーバーからの初期応答(たとえば、OPTIONS動詞を使用)を受信した後にのみ可能です。次に、クライアントはフォーマットの1つを選択し、それを以降の要求に使用します。
-
透明性のある交渉:
透過的なネゴシエーションは、サーバー主導のネゴシエーションとエージェント主導のネゴシエーションの両方を組み合わせたものです。この種のネゴシエーションには、ネゴシエーション作業をサーバーキャッシュとネットワークキャッシュ(存在する場合)に分散できるという利点があります。このような場合、オリジンサーバーが常に関与しているわけではなく、ユーザーエージェントがネゴシエーションを実行するために最初の呼び出しを行う必要もありません。ただし、HTTP仕様では、透過的なコンテンツネゴシエーションを実装するメカニズムは定義されていませんが、HTTPプロトコルに基づいて明示的に実装できます(必要な場合)。
ABAP RESTライブラリでは、サーバー駆動型ネゴシエーションが直接サポートされています。ライブラリは、RESTサービスのクライアント主導または透過的なコンテンツネゴシエーションの実装を妨げるものではありませんが、直接的な手段を提供するものではありません。