2017-03-09 10 views
1

私はOrderリソースと、アクションpublic ActionResult UpdateOrder(Order order)を持っていると言います。 私はREST APIを作成しようとしています。そして私はこの命令を次の状態に進めたいと思う。部分休憩更新

この目的のために私はステータス変更(メールをいくつか送信したり、ログを取ったり、DBなどにいくつかのものを挿入する)のすべてを行うバックエンドに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のようなリソースを使用します。バッキングコントローラは、必要なすべてのステップを処理できる必要があります。注文のアイテムを変更する場合は、1つにつき/orders/{id}/itemsまたは/orders/{id}/items/{id}となります。

注文自体を更新するには、/orders/{id}になるはずです。