バージョンをクエリ パラメーター (つまり の後ろ?
) に配置すると、各エンドポイントが個別にバージョン管理されていることがユーザーに示されます。私はこれを避けます。
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
。
RegisterRoutes
ASP.NET MVC を使用している場合は、 のメソッドでルート構成を使用して、これらすべてを非常に簡単に実行できますGlobal.asax.cs
。例えば:
routes.MapRoute("api1/1.1", "api1/1.1/some/endpoint",
new { controller = "Api1_1_1", action = "SomeEndpoint" });
Api1_1_1
methodを持つコントローラークラスがある場所SomeEndpoint
。