API バージョニングのベスト プラクティスを見てみましたか? 、しかし答えに確信が持てないので、より具体的な例でバージョン管理の部分をもう一度質問します。私は 2 つの URI を持っています (1 つは URI の一部としてバージョン管理があり、もう 1 つはバージョン管理なし):
http://xxxx/v1/user/123 -> favored solution in discussed thread
http://xxxx/user/123
最初のリンクが REST の考え方を表しているかどうか疑問に思っています。http://xxxx/v1/user/123
いつかのようなより高いAPIバージョンがあることを示唆しているので、私は混乱していhttp://xxxx/v2/user/123
ます。しかし、これは REST 用語では意味がありません。API バージョン自体は HTTP 1.0 または 1.1 であり、HTTP 要求内で既に送信されています。この REST リソース中心のビューは、SOAP や Java インターフェースなどの他の API インターフェースとは大きく異なります (修飾名で API バージョンを使用するのが一般的です)。
REST でバージョニングが意味を持つ唯一のことは、そのリソースの表現です (たとえば、新しいフィールドが追加または削除されます)。このバージョニングは、次のようなコンテンツ ネゴシエーションの部分に属します。
http://xxx/user/123 + HTTP 'Accept' Header -> Content negotation through header
http://xxx/user/123?v=1 -> for perma-links/hyperlinks
このようなバージョンのコンテンツ ネゴシエーションは、パス内の URI の一部である可能性があると主張することもできますが、同じリソースに対して異なる URI を使用することになり、ある時点でリダイレクトを維持する必要があるため、直観に反すると思います。
要約すると、REST URI には API のバージョン管理はなく、リソースの表現のバージョン管理のみが行われます。表現 version-info は content-negotiation に属します (queryParam または HTTP 'Accept' として)。
どう思いますか?どの点に反対/同意しますか?