带有默认链接的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=3
和api/v2/custum/get?id=3
,我如何在链接api/custum/get?=3
中做导航在最后版本,即在v2/custum/get?id=3
您可以像这样设置版本参数的默认值
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
的值,如果第二个路由配置中没有,则将其设置为默认版本。