WebAPIのバージョンを作成するための最良のアプローチは何ですか?
私はAPIをゼロから構築していますが、将来的には正常にバージョン管理されるようにしたいと思います。mysite.com/api/v2/..のようなものを想定しています。
私が見ているアプローチの1つは、APIのバージョンごとに個別のプロジェクト(Webアプリ)を作成することです。しかし、おそらくそれを行うためのより良い方法がありますか?
アイデアありがとうございます。
WebAPIのバージョンを作成するための最良のアプローチは何ですか?
私はAPIをゼロから構築していますが、将来的には正常にバージョン管理されるようにしたいと思います。mysite.com/api/v2/..のようなものを想定しています。
私が見ているアプローチの1つは、APIのバージョンごとに個別のプロジェクト(Webアプリ)を作成することです。しかし、おそらくそれを行うためのより良い方法がありますか?
アイデアありがとうございます。
この投稿で説明したように、URLにバージョン番号を含めることが標準的なアプローチです(内容は繰り返しません):WCFまたはASP.NetWebApiを使用したRESTfulAPIのバージョン管理の実装
可能ですが、完全に新しいプロジェクトを作成する必要はありません。単一のプロジェクトで直面する問題は、名前の衝突が発生することです。
/api/v1.0/Car/123
と
/api/v2.0/Car/123
どちらも指し示しますが、どちらCarController
か一方しか持つことができません。解決策は、独自の実装IHttpControllerSelector
を行い、DependencyResolverに登録することです。この実装はバージョン番号を調べ、おそらく名前空間に基づいてタイプを見つけます。
ここでREST論争を始めるつもりはありません。しかし、@ DarrelMillerが指摘しているように、これは私の提案されたアプローチを思いとどまらせる同じ主題に関する古い議論です。
個人的には、URLのバージョニングがその方法だと思います。
の独自の実装を作成する必要がありますIHttpControllerSelector
。最良の方法は、この実装をMicrosoftのに基づいて行うことIHttpControllerSelector
です。次にIHttpControllerSelector
、URLまたはコンテンツタイプのどちらでバージョン管理するかを決定できます。
最も基本的な実装IHttpControllerSelector
は、メソッドを直接実装して実装するだけSelectController
ですが、パフォーマンス上の理由から、メソッドの周りにキャッシュを実装する方が適切です。
コントローラを見つけるには、IHttpControllerTypeResolver
を使用して取得できるインスタンスを単純化しますHttpConfiguration.Services
。
私は次のようなものを使用しました:http://damsteen.nl/blog/implementing-versioning-in-asp.net-web-api。また、Githubにいくつかのコードを配置します:https ://github.com/Sebazzz/SDammann.WebApi.Versioning 。