4

WebAPIのバージョンを作成するための最良のアプローチは何ですか?

私はAPIをゼロから構築していますが、将来的には正常にバージョン管理されるようにしたいと思います。mysite.com/api/v2/..のようなものを想定しています。

私が見ているアプローチの1つは、APIのバージョンごとに個別のプロジェクト(Webアプリ)を作成することです。しかし、おそらくそれを行うためのより良い方法がありますか?

アイデアありがとうございます。

4

2 に答える 2

4

この投稿で説明したように、URLにバージョン番号を含めることが標準的なアプローチです(内容は繰り返しません):WCFまたはASP.NetWebApiを使用したRESTfulAPIのバージョン管理の実装

可能ですが、完全に新しいプロジェクトを作成する必要はありません。単一のプロジェクトで直面する問題は、名前の衝突が発生することです。

/api/v1.0/Car/123

/api/v2.0/Car/123

どちらも指し示しますが、どちらCarControllerか一方しか持つことができません。解決策は、独自の実装IHttpControllerSelectorを行い、DependencyResolverに登録することです。この実装はバージョン番号を調べ、おそらく名前空間に基づいてタイプを見つけます。


アップデート

ここでREST論争を始めるつもりはありません。しかし、@ DarrelMillerが指摘しているように、これは私の提案されたアプローチを思いとどまらせる同じ主題に関する古い議論です。

RESTURIをバージョン管理する方法

個人的には、URLのバージョニングがその方法だと思います。

于 2012-05-23T08:24:20.480 に答える
3

の独自の実装を作成する必要があります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 。

于 2012-08-01T14:46:21.813 に答える