0

.ashx (カスタム ハンドラー) ファイルとして提供される ASP.NET で一連の json Web サービスをセットアップしています。例は次のとおりです。

/mobile/json.ashx

バージョン管理の何らかの形式を実装し、アップグレードされていないアプリを壊さないようにしたいと考えています。そこで、次のような道をたどりました。

/mobile/json.ashx?v=1.0

もちろん、API バージョン間の違いを管理するためにカスタム ハンドラーに switch ステートメントがありますが、これは私にとって非常に保守可能なソリューションのようには思えません。

この種の設定のベスト プラクティスと、バージョン管理に使用できるオプションは何ですか?

ありがとう

4

1 に答える 1

2

バージョンをクエリ パラメーター (つまり の後ろ?) に配置すると、各エンドポイントが個別にバージョン管理されていることがユーザーに示されます。私はこれを避けます。

Web サービスが、個別にバージョン管理されるより大きな論理ユニットが存在するように構成されている場合、次のようなものを使用します。

/api1/1.0/some/endpoint
/api1/1.1/some/endpoint
/api2/1.0/some/other/endpoint
/api2/2.0/some/other/endpoint
...

パスのバージョン部分は、バージョン管理されているものの直後にあります。/api1/1.1/これは、その下にあるすべてが API 1 のバージョン 1.1 であり、その下に/api2/2.0/あるすべてが API 2 のバージョン 2.0 であることをユーザーに示唆しています。

誰かがパスのバージョン部分を完全に省略した場合、最新バージョンを暗示する必要があります。したがって/api2/some/other/endpoint、たとえば、にマップされます/api2/2.0/some/other/endpoint

RegisterRoutesASP.NET MVC を使用している場合は、 のメソッドでルート構成を使用して、これらすべてを非常に簡単に実行できますGlobal.asax.cs。例えば:

routes.MapRoute("api1/1.1", "api1/1.1/some/endpoint",
    new { controller = "Api1_1_1", action = "SomeEndpoint" });

Api1_1_1methodを持つコントローラークラスがある場所SomeEndpoint

于 2013-08-15T19:44:56.807 に答える