Stellen Sie sich vor, ein Benutzer hat gerade Daten in Ihrer Webanwendung veröffentlicht und Sie möchten die aktuelle Seite mit einer Nachricht über ihren Erfolg oder Fehler erneut anzeigen. Das wird kompliziert.Wie gehen Sie mit all den Möglichkeiten um, die Sie von einem HTTP-POST erhalten könnten?
Wenn die Daten gültig sind und der Benutzer HTML erwartet, möchten Sie eine Weiterleitung ausgeben, damit die Aktualisierung sie nicht erneut sendet. Sie möchten zum Referer umleiten, falls vorhanden, und eine Nachricht anzeigen. Wenn sie nicht HTML erwarten, können Sie einfach 200 OK zurückgeben.
Wenn die Daten ungültig sind und der Benutzer HTML erwartet, möchten Sie die Seite, von der sie stammen, mit einem sichtbaren Fehler erneut rendern, sodass sie erneut posten können. Um dies zu tun, müssten Sie die vorherige Aktion ausführen und auf die Fehlermeldung aufmerksam machen. Um zu entscheiden, welche die vorherige Aktion war, haben Sie diese möglicherweise als versteckten Parameter in das Formular aufgenommen. Wenn sie html nicht erwarten, können Sie einen anwendbaren 4xx-Client-Fehler zurückgeben.
Ich finde mich viel zu oft diesen albernen Tanz. Also die Fragen sind:
1) Wie würden Sie diesen ganzen Prozess abstrahieren, so dass jeder Form Post davon profitieren kann?
2) Was ist der wartungsfreundlichste oder am wenigsten repetitive Weg, um dies in Ihrem bevorzugten Web-Framework zu erreichen?
3) Gibt es irgendetwas, was Sie an diesem ganzen Prozess ändern würden, um es einfacher zu machen?
Idee 1: Rendern Sie nie auf einem Post, immer umleiten. Füllen Sie die Fehlerdaten in der Sitzung für einen Sekundenbruchteil zwischen Anforderungen aus und löschen Sie sie dann, genau wie die Erfolgsmeldung. Auf diese Weise können gültige und ungültige Posts auf die gleiche Weise behandelt werden.
Idee 2: Machen Sie keine normalen HTTP-Posts. Benutze nur Ajax. Jetzt müssen Sie sich keine Gedanken mehr über das Rendern oder Weiterleiten machen. Dies wäre nur nützlich, wenn Sie bereits eine ajaxlastige Anwendung haben.
Ich nehme an, Sie wissen nicht, woher Sie kommen. Ich stoße häufig auf Situationen, in denen ich von verschiedenen Seiten auf dieselbe URL verweisen möchte, um eine Aktion erneut zu verwenden. In dem Fall, in dem die Daten ungültig sind und ich rendere statt weiterzuleiten, müsste ich die vorherige Aktion intuitiv angehen. Ich nehme an, ich könnte dies vom Referrer immer noch erahnen. –