Hallo Matthias,
Alle Vorgänge, die Veränderungen an Daten zur Folge haben, sollten nicht per GET gemacht werden...
Nope. Sie DÜRFEN es nicht. Weil die Semantik des GET Requests Idempotenz beinhaltet. Was ein GET einmal liefert, liefert er immer. Darum darf man GET Requeste bedenkenlos cachen.
WIKI:
Idempotenz ist eine Bezeichnung aus der Mathematik und Informatik. In der Mathematik bezeichnet man ein Objekt , das mit einer Verknüpfung die Eigenschaft hat, als idempotent bezüglich dieser Verknüpfung. Ein wichtiger Spezialfall sind idempotente Funktionen bezüglich der Hintereinanderausführung.
Letzteres betrifft also in OOP höchstens die Verkettung von Methoden. Die auch nur deswegen funktioniert weil der Return-Value die Instanz selber ist. Und auch dabei ist es unerheblich ob eine Methode diese Instanz verändert oder nicht.
Wobei eine Verkettung von Methoden gerade dann erst richtig interessant wird, wenn die in der Instanz referenzierten Daten verändert werden. Z.B. beim Auslösen einer Bestellung und beim Leeren des Warenkorb. Bei solchen Verkettungen bleibt man innerhalb einundderselben Klasse.
Den Begriff der Idempotenz überhaupt in HTTP einzubringen halte ich für blödsinnig.
Weil es da nichts zu verketten gibt. Der Datenaustausch zwischen Datenhaltungsschicht und Anwendung hat über klar definierte Schnittstellen zu erfolgen, was die Layer einmal transparent macht und zum Anderen aber auch voneinander abgrenzt. Derartige Abläufe sind nicht nur klassenübergreifend sondern auch systemübergreifend.
MFG