サーバドリブンなコンテンツネゴシエーションを行いながら、レスポンスを拡張してリンクを付け、表現のバージョンとフォーマットを変え、クライアントがニーズによってURLを選択できるようにすること。Howard Dierking氏が次のNuGet APIのメジャーバージョンであるバージョン3の設計で得られた最近の経験と自身の1年前の考え方とを比較しながら、このようなことを書いている。
NuGet APIのようなスケールを求められ、さまざまなクライアントが接続してくるAPIを設計した経験から、氏はサーバドリブンなコンテンツネゴシエーションを信用しすぎていたと考え、今はクライアントをサーバに委ねすぎていると感じている。クライアントは特定の表現を要求することはできるが、クライアントが何を受け取るかもサーバに任されてしまっている。
氏は別のハイブリッドな方法を考えている。サーバドリブンなコンテンツネゴシエーションでは正規のリソースへのリンクを使いながらも、レスポンスを拡張してさまざまな表現へのリンクを提供する方法だ。クライアントは必要に応じてメタデータを使いながら、URIを選択する。
統一のインターフェイスの変更によってバージョニングされるという前提に立ち、氏は新しいバージョニングの方式を次のように要約している。
- 追加だけなら、単に表現に追加すればいい。理解できないクライアントを無視するだけだ。
- リソースを壊したり、リソースの意味がかわる変更をする場合は、新しい名前(URI)で新しいリソースを作る。
- リソースへの最適なパスを提供するようにコンテンツネゴシエーションを使う。ただし、制御はクライアントに渡し、異なる選択ができるようにする。
この3つのうち、始めのひとつは昨年から変わっていない。残りの2つは、氏の現時点の考え方を反映し、変更が加えられている。
Howard Dierking氏はMicrosoft開発プラットフォームのパッケージマネージャであるNuGet APIを開発している。