C# webapi版本控制方法

C# webapi版本控制方法,c#,asp.net,rest,asp.net-web-api2,C#,Asp.net,Rest,Asp.net Web Api2,我在互联网上读过很多关于WebAPI版本控制的链接,我发现的每一篇博客文章或资源都非常清楚如何实现这一功能 然而,不幸的是,我必须为一个已经在生产中的API实现这个特性,而这个API不尊重我到目前为止读到的任何解决方案 此API的基址类似于http://api.server.com并处理多个资源。这些资源都已通过ASP.NET属性路由进行路由,如{resource}/{id}。比如说 职位 得到 实际上,WebAPI配置非常简单,如下所示 // Web API routes config.Map

我在互联网上读过很多关于WebAPI版本控制的链接,我发现的每一篇博客文章或资源都非常清楚如何实现这一功能

然而,不幸的是,我必须为一个已经在生产中的API实现这个特性,而这个API不尊重我到目前为止读到的任何解决方案

此API的基址类似于
http://api.server.com
并处理多个资源。这些资源都已通过ASP.NET属性路由进行路由,如
{resource}/{id}
。比如说

职位

得到

实际上,WebAPI配置非常简单,如下所示

// Web API routes
config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);
我被分配了重新设计这个api的任务,我想创建并实现一个新的版本控制方案,该方案与现有方案并排

我想以一种方式使用url版本控制方法,以便下一个realease在url中有类似的版本

后{version}/民族

获取{version}/peoples/5

并在这个新版本中更好地遵循restful建议(比如从url中删除动词)


我怎样才能得到这个?您能否给出一些建议、示例或链接,解释如何实现此功能并保持实际版本正常工作?

添加新路由删除api,使用apiv2等新方法,并在新方法上定义路由[route(“apiv2/createsInsurance/{id}”)]IMHO,如果它的x侧,则您的版本化URL应该可以。您可以根据需要“宣布”未来的支持/功能和弃用计划。您可以添加一个新的路由作为/api/v2/{controller}/{id}。并保持当前的一个不变。但是,当有人调用当前版本时,您可以在响应中分配HTTP 301状态代码,包括每个api调用的v2新url,以让用户知道url将永久移动到新位置。