带有默认链接的Web API版本控制

本文关键字:Web API 版本控制 链接 默认 | 更新日期: 2023-09-27 18:04:16

我有两个版本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

带有默认链接的Web API版本控制

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

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

有一个版本化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的值,如果第二个路由配置中没有,则将其设置为默认版本。