假设我想在控制器中进行标准的CRUD操作:
api / values - IEnumerable Get() api / values / 1 - 获取(int id) api / values - 发布([FromBody]字符串值) api / values / 5 - Put(int id,[FromBody]字符串值) api / values / 5 - 删除(int id)
但我希望有其他操作,例如:
API /值/ someoperation1 API /值/ searchbysomething ......等等。
在此下方有第二条路线无济于事
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}"
);
答案 0 :(得分:0)
默认情况下,无法在单个控制器中混合使用REST样式路由和RPC样式路由。
在ASP.NET Web Stack的Codeplex上有一个未解决的问题 - http://aspnetwebstack.codeplex.com/workitem/184。
唯一合理的解决方案是为每个资源配备2个控制器 - 一个用于CRUD,另一个用于非CRUD(RPC)类型的操作。