指定控制器的 MapHttpRoute
MapHttpRoute for specified controller
我创建了一个 WebApi 2 网络服务。
为了支持比某些端点的默认路由更复杂的路由,我添加了如下内容:
config.Routes.MapHttpRoute(
name: "StatusApi",
routeTemplate: "api/{controller}/Status/{status}",
defaults: new { status = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DisplayUnitApi",
routeTemplate: "api/{controller}/DisplayUnit/{unit}",
defaults: new { status = RouteParameter.Optional }
);
我的意思是这些新路线并非针对所有端点,而是仅针对其中一些端点。
不幸的是现在所有端点都支持这些路由,但我更愿意只为我选择的端点保留新路由。
是否可以选择性?
一个例子:
POST api/DoAction
POST api/DoAction/Status
POST api/DoAction/Name/{unit}
在添加新路线之前,唯一可用的是 POST api/DoAction。对于这个控制器,我只想保持原始端点可访问。
谢谢,
罗伯托
试试下面的代码
config.Routes.MapHttpRoute(
name: "StatusApi",
routeTemplate: "api/{controller}/Status/{status}",
defaults: new { controller = "xxxx", action = "yyyyy" });
config.Routes.MapHttpRoute(
name: "DisplayUnitApi",
routeTemplate: "api/{controller}/DisplayUnit/{unit}",
defaults: new { controller = "xxx", action = "yyyyy" });
在网络中 API 2 你有属性路由:
http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2
因此,您将映射路由到一般默认路由,并且特定操作将它们归因于您想要的:
[httpPost, Route("api/DoAction")]
[httpPost, Route("api/DoAction/Status]
[httpPost, Route("api/DoAction/Name/{unit}]
我创建了一个 WebApi 2 网络服务。 为了支持比某些端点的默认路由更复杂的路由,我添加了如下内容:
config.Routes.MapHttpRoute(
name: "StatusApi",
routeTemplate: "api/{controller}/Status/{status}",
defaults: new { status = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DisplayUnitApi",
routeTemplate: "api/{controller}/DisplayUnit/{unit}",
defaults: new { status = RouteParameter.Optional }
);
我的意思是这些新路线并非针对所有端点,而是仅针对其中一些端点。 不幸的是现在所有端点都支持这些路由,但我更愿意只为我选择的端点保留新路由。
是否可以选择性?
一个例子:
POST api/DoAction
POST api/DoAction/Status
POST api/DoAction/Name/{unit}
在添加新路线之前,唯一可用的是 POST api/DoAction。对于这个控制器,我只想保持原始端点可访问。
谢谢, 罗伯托
试试下面的代码
config.Routes.MapHttpRoute(
name: "StatusApi",
routeTemplate: "api/{controller}/Status/{status}",
defaults: new { controller = "xxxx", action = "yyyyy" });
config.Routes.MapHttpRoute(
name: "DisplayUnitApi",
routeTemplate: "api/{controller}/DisplayUnit/{unit}",
defaults: new { controller = "xxx", action = "yyyyy" });
在网络中 API 2 你有属性路由:
http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2
因此,您将映射路由到一般默认路由,并且特定操作将它们归因于您想要的:
[httpPost, Route("api/DoAction")]
[httpPost, Route("api/DoAction/Status]
[httpPost, Route("api/DoAction/Name/{unit}]