将版本放在查询参数中(即,在 之后?
)向用户建议每个端点都是单独版本的。我会避免这种情况。
如果您的 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
。
如果您使用的是 ASP.NET MVC ,那么所有这些都可以通过RegisterRoutes
. Global.asax.cs
例如:
routes.MapRoute("api1/1.1", "api1/1.1/some/endpoint",
new { controller = "Api1_1_1", action = "SomeEndpoint" });
你有一个Api1_1_1
带有方法的控制器类SomeEndpoint
。