Ich schreibe eine alte Rails-Anwendung neu und dachte, ich sollte es REST-mäßig machen, als Lernerfahrung, wenn nichts anderes.
Ich habe einige Aktionen erreicht, die einen booleschen Wert umschalten, zum Beispiel wenn ein Artikel veröffentlicht wird oder nicht.
Bevor ich ein paar Aktionen hatte: toggle_published, publish und unpublish.
Sie waren sehr einfach zu benutzen: Ich habe gerade einen Link zu ihnen in der Artikel-Liste gemacht.
Wie würden Sie das Gleiche in einer RESTful Manier machen?
Soll ich die update-action verwenden und ein Mini-Formular erstellen, um alle zuvor verwendeten Links zu ersetzen? Mir gefällt diese Idee nicht besonders.
Es klingt, als hätten Sie zwei Anwendungsfälle:
Sie können eine Mitgliedsroute für die Umschaltaktion hinzufügen für:
%Vor%Und Artikelaktualisierung verwenden: veröffentlichtes Attribut über die Standard-REST-Ressourcenroute.
%Vor%Nur ein Hinweis:
Eine Toggle-Methode ist nicht RESTful, weil das HTTP-PUT-Verb idempotent sein soll (siehe ao Ссылка ) ). Dies bedeutet, dass Sie unabhängig davon, wie oft Sie eine Methode ausführen, immer das gleiche Ergebnis liefern sollten. Eine Toggle-Methode hält sich nicht an dieses Prinzip, da es nicht das gleiche Ergebnis liefert, wenn Sie es einmal ausführen und es zweimal ausführen.
Wenn Sie es RESTful machen wollen, sollten Sie zwei Methoden erstellen: eine für die Einstellung und eine für die Aufhebung.
Wenn Sie eine Anwendung RESTful machen, bedeutet das nicht nur, dass Sie das richtige HTTP-Verb verwenden müssen.
Ich würde es wahrscheinlich mit PUT / DELETE oder POST / DELETE auf einer verschachtelten "Toggle-Ressource" lösen. Vielleicht nicht 100% völlig erholsam, aber sicherlich leicht genug zu verstehen.
%Vor%Scheint ein bisschen seltsam zu sein, aber es ist technisch RESTful.
Update: Ein (vielleicht) natürlicherer Ansatz könnte auch einfach sein:
%Vor% Sie könnten auch das PATCH
Verb mit dem eigentlichen Artikel verwenden, von dem ich annahm, dass er eine published
Eigenschaft hat:
Weil all die coolen REST Kids heutzutage PATCH benutzen.
Tags und Links ruby-on-rails rest