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 。