2017-03-09 61 views
1

可以说我有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方法...所以我不知道什么是正确的方法...

回答

0

如果您只想更新OrderStatus我会使用像/orders/{id}/status这样的资源。支持控制器应该能够处理所有需要的步骤。它会改变一个订单的项目,这将是/orders/{id}/items/orders/{id}/items/{id}一个。

要更新订单本身,将得到/orders/{id}