2017-03-09 1 views
1

Lets sagen, ich habe Order Ressource und eine Aktion public ActionResult UpdateOrder(Order order). Ich versuche REST api zu machen. Und ich möchte diese Bestellung in den nächsten Status bringen.Teil Rest Updates

Zu diesem Zweck habe ich eine Methode namens ChangeOrderStatus(string newStatus, int orderId) auf Backend, die alles über Statusänderung (senden Sie einige Mails, Protokollierung, fügen Sie einige Dinge in DB. Etc ...) und diese Methode wird von Controller-Aktion aufgerufen. Der Punkt ist, dass das Ändern des Auftragsstatus ein komplexer Vorgang ist und nicht nur den alten Feldwert durch einen neuen ersetzt.

Aber meine Frage ist, sollte ich schreiben neue Controller-Aktion (Strecke) für Statusänderung, zum Beispiel public ActionResult UpdateOrderStatus(string newStatus, int orderId) und rufen ChangeOrderStatus dort oder ich sollte alles in UpdateOrder(Order order) Methode setzen? Zum Beispiel, einen Teil der UpdateOrder(Order order) Methode in diesem Fall wäre:

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

ich es mit dem ersten Ansatz tun würde, aber einige Leute sagen mir, dass der zweite Ansatz ist besser, weil es ein einziger Eintrag sein sollte Punkt für Ressourcen-Update, so dass mein Status-Update oder andere Updates im Zusammenhang mit Bestellung Ressource sollte in UpdateOrder Methode ... Also ich bin mir nicht sicher, was ist der richtige Ansatz ...

Antwort

0

Wenn Sie nur eine OrderStatus aktualisieren möchten Ich würde eine Ressource wie /orders/{id}/status verwenden. Der Backing Controller sollte alle notwendigen Schritte durchführen können. Sie würden die Artikel einer Bestellung ändern, das wäre /orders/{id}/items oder /orders/{id}/items/{id} für einen einzigen.

Um die Bestellung selbst zu aktualisieren, würde dies zu /orders/{id}.