【问题标题】:Partial rest updates部分休息更新
【发布时间】:2017-03-09 15:14:46
【问题描述】:

假设我有Order 资源和一个操作public ActionResult UpdateOrder(Order order)。 我正在尝试制作REST api。我想把这个订单推到下一个状态。

为此,我在后端有一个名为 ChangeOrderStatus(string newStatus, int orderId) 的方法,它可以处理有关状态更改的所有事情(发送一些邮件、进行日志记录、将一些东西插入数据库等...),并且将从控制器操作中调用该方法.关键是更改订单状态是一项复杂的操作,而不仅仅是用新的替换旧的字段值。

但我的问题是我应该为状态更改编写新的控制器操作(路由),例如public ActionResult UpdateOrderStatus(string newStatus, int orderId) 并在那里调用ChangeOrderStatus,还是应该将所有内容都放在UpdateOrder(Order order) 方法中?例如,在这种情况下,UpdateOrder(Order order) 方法的一部分将是:

if (order.Status != oldOrder.Status) { ChangeOrderStatus(order.Status, order.Id); }

我会用第一种方法,但有人告诉我第二种方法更好,因为资源更新应该有一个入口点,所以我的状态更新或与订单资源相关的任何其他更新都应该在UpdateOrder 方法...所以我不确定什么是正确的方法...

【问题讨论】:

    标签: asp.net rest asp.net-web-api


    【解决方案1】:

    如果您只想更新OrderStatus,我会使用/orders/{id}/status 之类的资源。后备控制器应该能够处理所有必要的步骤。如果您要更改订单的项目,这将是 /orders/{id}/items/orders/{id}/items/{id} 对于单个订单。

    要更新订单本身,这需要/orders/{id}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-10
      • 1970-01-01
      • 2019-05-18
      • 1970-01-01
      • 2018-10-12
      • 2015-11-12
      • 2015-02-19
      • 1970-01-01
      相关资源
      最近更新 更多