【发布时间】: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