什么是版本WCF Web API的最佳方法

本文关键字:最佳 方法 API Web 版本 WCF 什么 | 更新日期: 2023-09-27 18:20:40

我目前有一个WCF web API,我已将其拆分为两个版本。第一个版本在api.mysite.com上运行。第二个版本目前尚未发布到生产中。

我想要一种发布第二个API的方法,这样对第一个版本的请求就不会被中断。我的想法是添加一个x-api-version头,并在内部将请求路由到指定的API。如果没有标头,则默认为版本1。我考虑将/v1/v2添加到路径的开头,以定义版本,这样对v1或v2的请求可能看起来像:

http://api.mysite.com/v1/authentication/login
http://api.mysite.com/v2/auth/login

唯一需要注意的是,没有版本的请求必须工作,并且默认为版本1(或我指定的任何版本)。

虽然这听起来不错(至少对我来说),但我不确定推荐的实现方式是什么。我知道我总是可以做一些反向代理,但我希望我的解决方案可以是程序化的。服务器部分所需的配置越少越好。如果有人有任何想法或博客/教程的链接,那将是非常棒的!

提前感谢!

什么是版本WCF Web API的最佳方法

Microsoft在这里有一篇关于WCF版本控制的不错的文章

好吧,我很喜欢到目前为止收到的答案(感谢大家),但考虑到API的限制和目标,它并没有完全解决我的问题。因此,我想详细说明我已经找到并计划使用的解决方案。

首先,我通过URI对我的API进行版本控制。这意味着API的不同版本将看起来像:

http://api.mysite.com/authentication/login
http://api.mysite.com/v1/authentication/login
http://api.mysite.com/v2/auth/login
http://api.mysite.com/v3/auth/letmeinplease
... you get the point ...

这里需要注意的重要一点是,如果我不包括版本号,那么我默认为版本1。然而,这将是我目前的设置,它可以很容易地默认为最新版本、最新稳定版本等。

我们开始吧。我创建了一个应用程序所在的文件夹(wwroot/api)。在该文件夹中,我为所有版本创建了文件夹:v1、v2等。现在,在IIS(对我来说是7.5)中,我创建了一个新项目,该项目的应用程序根目录为wwroot/api/v1。然后我添加了每个版本文件夹(包括v1)作为子应用程序。这使我可以通过URI(如上所示)对API进行版本化,但有一点需要注意。

Web.config继承真的很痛苦。因此,我确保为我的所有api版本禁用它。关于如何做到这一点的参考资料可以在这里找到。除了这个例外,一切都像一个符咒!:-)