我有两个版本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
答案 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
的值,如果第二个路由配置不存在,请将其设置为默认版本。