我是ASP.NET的新手,但我希望为我即将开始的新API实现一些版本控制。
我甚至不确定我所寻找的是可能的,但我在一个非常干净的版本方法使用头部变量后。
理想情况下,我希望能够在代码结构中有一个版本文件夹,并且在不同的文件夹中包含不同的API版本。每个版本文件夹都将包含核心API代码的完整副本,这样我就知道不会有任何冲突等。我知道这会使代码膨胀,但保持代码非常干净是值得的,并且只有超过2-3个API版本处于活动状态。
我在互联网上找到了许多头文件示例,但它们都要求类位于不同的命名空间中,如果我要做代码的完整副本,那么每次复制时都要重命名所有类是不现实的。
我正在尝试做的事情是可能的吗?或者在处理多个类时有没有更干净的解决方案?
2条答案
按热度按时间oprakyz71#
有四种基本的方法来版本化RESTful方式-
1.内容协商这是在HTTP报头中完成的。
1.请求标头这也在HTTP标头中完成。
我个人喜欢第一种方法。你可以读Mike Wasson's ASP.NET Web API: Using Namespaces to Version Web APIs。
很多人修改了Mike Wasson的原始源代码。我喜欢ASP.NET Web API 2 book by Jamie Kurtz, Brian Wortman中使用的那个。
因为它有太多的移动部分,我创建了a sample project at GitHub。
然后,添加ApiVersionConstraint
用法
您只需将RoutePrefix放在控制器上,就完成了。
yqkkidmi2#
这是一个有点晚的答案,但是对于仍然希望将版本控制应用于ASP.NET Web API堆栈的任何人来说,ASP.NET API Versioning已经成为实现它的一种非常常用的方法。Basic Sample将带您完成开始使用的所有必要步骤。
API版本控制支持查询字符串、头、媒体类型和URL段。如果支持多个方法,您可以将方法组合在一起,甚至可以创建自己的方法来提取API版本。默认的版本控制方法是通过查询字符串。尽管它很受欢迎,而且@Win也给出了建议,我不推荐通过URL分段进行版本控制。这是最不符合RESTful的方法,因为它违反了 Uniform Interface 约束,并且有过多的有问题的边缘情况。
从添加ASP.NET Web API Versioning NuGet包开始,你想如何版本化以及如何组织代码是非常主观的,但这里有一个非常简单的设置: