我需要为我的api控制器设置自定义操作,例如api/{controller}/{action}/{id}
这是我的配置
config.Routes.MapHttpRoute(
name: "DefaultMethodApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "ApiByAction",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "Browse", id = RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
这达到默认路由/ api/dropzone/1但是我尝试通过"ApiByAction"配置命中/ api/dropzone/browse/1,但它不起作用.
路由定义的顺序很重要,请确保您尊重它,因为它们的评估顺序与您声明它们的顺序相同:
config.Routes.MapHttpRoute(
name: "ApiByAction",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: new { action = @"^(?!\d)[a-z0-9]+$" }
);
config.Routes.MapHttpRoute(
name: "DefaultMethodApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
另请注意,您可能需要{action}在第一个路径定义中为令牌指定约束.
| 归档时间: |
|
| 查看次数: |
819 次 |
| 最近记录: |