带有默认链接的web api版本控制

时间:2014-05-21 06:16:18

标签: c# asp.net-mvc asp.net-web-api

我有两个版本v1和v2的web api,它们就像控制器中的文件夹,这些文件夹包含具有相同名称和方法的控制器。 我的WebApiConfig看起来像这样

       config.Routes.MapHttpRoute(
            "DefaultApi", 
            "api/v{version}/{controller}/{id}",
            new {id = RouteParameter.Optional}
            );
        config.Services.Replace(typeof(IHttpControllerSelector), new HttpControllerSelector((config)));

我的链接分别是api/v1/custum/get?id=3api/v2/custum/get?id=3,我可以在最后一个版本的链接api/custum/get?=3中进行导航,例如v2/custum/get?id=3

2 个答案:

答案 0 :(得分:0)

您可以像这样设置版本参数的默认值

  config.Routes.MapHttpRoute(
            "DefaultApi",
            "api/{version}/{controller}/{id}",
            new
            {
                version="v2",
                id = RouteParameter.Optional
            }

答案 1 :(得分:0)

为版本化API和后备配置提供路由配置。例如,

config.Routes.MapHttpRoute(
    name: "VersionedApi",
    routeTemplate: "api/{version}/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

第一个用特定版本映射调用。第二个在路线中没有版本。在HttpControllerSelector中,尝试获取version的值,如果第二个路由配置不存在,请将其设置为默认版本。