繁体   English   中英

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

[英]What is the best way to version a WCF Web API?

我目前有一个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进行版本控制的文章

好吧,我很享受到目前为止我收到的答案(谢谢你们两个)但是,鉴于我对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版本禁用它。 可以在此处找到有关如何执行此操作的参考。 除此之外,一切都像魅力一样! :-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM