版本WebAPI的最佳方法是什么?实现ASP.NET WebAPI版本控制的最佳方式是什么?
我从头开始构建一个API,我想确保它将在未来优雅地版本化。我设想的东西像mysite.com/api/v2/...
我看到的一种方法是为每个版本的API创建一个单独的项目(网络应用程序)。但也许有更好的方法来做到这一点?
谢谢你的想法。在URL
版本WebAPI的最佳方法是什么?实现ASP.NET WebAPI版本控制的最佳方式是什么?
我从头开始构建一个API,我想确保它将在未来优雅地版本化。我设想的东西像mysite.com/api/v2/...
我看到的一种方法是为每个版本的API创建一个单独的项目(网络应用程序)。但也许有更好的方法来做到这一点?
谢谢你的想法。在URL
包括版本号是标准的做法,因为我在这个岗位解释(我不重复的内容):Implementing versioning a RESTful API with WCF or ASP.Net Web Api
你并不需要创建一个全新的项目,虽然你可以。你将与一个单一的项目将面临的问题是,会有名的碰撞:
/api/v1.0/Car/123
和
/api/v2.0/Car/123
都将指向CarController
,而您只能拥有其中一个。解决方案将实施您自己的IHttpControllerSelector
并注册DependencyResolver。该实现将查看版本号,并可能根据命名空间查找类型。
我不打算在这里开始REST的争论。但随着@DarrelMiller指出,这里是关于同一主题的旧讨论劝阻我建议的方法:
我个人认为URL版本是要走的路。
您需要创建自己的IHttpControllerSelector
实现。最好的方法是将此实现基于微软的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。
我可以向你保证,最REST拥护者会在那样的URL强烈反对版本。 –
@达雷尔米勒,你有什么看法?你能与我们分享吗? – Aliostad
http://stackoverflow.com/questions/972226/how-to-version-rest-uris/975394#975394 –