【问题标题】:Proper routes for both CRUD and non-CRUD operationsCRUD 和非 CRUD 操作的正确路由
【发布时间】:2012-09-23 18:02:31
【问题描述】:

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

api/values - IEnumerable Get() api/values/1 - 获取(int id) api/values - 发布([FromBody]字符串值) 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}"
        );

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 asp.net-web-api


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-04
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      相关资源
      最近更新 更多