0

我们在 ASP.NET 中设置了一堆 json Web 服务,它们作为 .ashx(自定义处理程序)文件提供服务。一个例子是:

/mobile/json.ashx

我们希望实现某种形式的版本控制以及不破坏尚未升级的应用程序。所以我们沿着这条路走:

/mobile/json.ashx?v=1.0

现在,当然我们在自定义处理程序中有一个 switch 语句来管理 api 版本之间的差异,但这对我来说听起来不是一个非常可维护的解决方案。

这种设置的最佳实践是什么?有哪些选项可用于版本控制?

谢谢

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

如果您使用的是 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

于 2013-08-15T19:44:56.807 回答