0

假设我想在控制器中进行标准 CRUD 操作:

api/values - IEnumerable Get() api/values/1 - Get(int id) api/values - Post([FromBody]string value) api/values/5 - Put(int id, [FromBody]string value) api/ values/5 - 删除(int id)

但我想要额外的操作,比如:

api/values/someoperation1 api/values/searchbysomething ...等。

在此下方有第二条路线无济于事

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}"
        );
4

1 回答 1

0

默认情况下,不可能在单个控制器中混合 REST 样式路由和 RPC 样式路由。

在 ASP.NET Web Stack 的 Codeplex - http://aspnetwebstack.codeplex.com/workitem/184上有一个未解决的问题。

对您来说唯一合理的解决方案是为每个资源设置 2 个控制器 - 一个用于 CRUD,一个用于非 CRUD (RPC) 类型的操作。

于 2012-10-02T22:08:06.923 回答