如何在/ api/v1上实现版本化的WebApi

Chr*_*ris 3 c# asp.net-mvc asp.net-mvc-areas asp.net-mvc-4 asp.net-web-api

我想在现有的MVC项目中构建一个版本化的WebApi,以便我的URL可以

/api/v1/account
/api/v2/account
Run Code Online (Sandbox Code Playgroud)

我目前不使用区域,但经过一些研究后,我认为这对我Areas有用,但显然你无法嵌套(我目前正在使用MVC4,但可以升级到5).

我怎样才能做到最好?

更新

我最终使用了这个

Yas*_*ser 6

两种方法可以使用Web API实现版本控制

方法1:

/api/accountv1/
/api/accountv2/
Run Code Online (Sandbox Code Playgroud)

我在API版本控制中找到的最简单的方法是创建一个相同的" AccountV1Controller " 控制器并将其命名为" AccountV2Controller ",注意控制器名称中的后缀V1和V2,我们将依赖此部分来选择适当的控制器基于API版本.

方法2:

/api/v1/account
/api/v2/account
Run Code Online (Sandbox Code Playgroud)

或者您可以使用Routes来获得相同的行为

config.Routes.MapHttpRoute(
    name: "1-0Api",
    routeTemplate: "api/v1/Account/{id}",
    defaults: new { controller = "AccountV1", id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
    name: "2-0Api",
    routeTemplate: "api/v2/Account/{id}",
    defaults: new { controller = "AccountV2", id = RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)

取自这里