POST / Redirect / GET mit ungültiger Formularübermittlung?

11

Ist es im Bereich der Webentwicklung empfehlenswert, POST / Redirect / GET durchzuführen, wenn Felder in einer Formularübermittlung ebenfalls ungültig sind?

In diesem Fall hätte normalerweise keine vertrauliche Transaktion stattgefunden. Kann jedoch argumentiert werden, dass es dennoch eine gute Praxis ist, das POST / Redirect / GET-Muster zu verwenden?

Anständiger Dabbler
quelle

Antworten:

10

Aus REST-Sicht sollte die Webkonversation so ablaufen

GET / Beispiel

200 OK - enthält leeres HTML-Formular

Der Benutzer füllt das Formular aus

POST / Beispiel

formfield1 = ok

formfield2 = schlecht

400 BAD REQUEST - enthält ausgefülltes Formular-HTML mit Fehlern

Der Benutzer identifiziert das Problem mit der Formularübermittlung und behebt es

POST / Beispiel

formfield1 = ok

formfield2 = fest

201 CREATED - enthält HTML mit Erfolgsmeldung und Weiterleitungslinks (auch Standortheader für REST-Clients) oder 200 OK und 204 NO CONTENT sind zulässig

Es ist nicht erforderlich, eine Umleitung einzuführen, und dies würde die Semantik der Konversation beeinträchtigen.

Gary Rowe
quelle
1
O wow, ja, wie hätte ich REST oder nur andere HTTP-Statuscodes im Allgemeinen vergessen können. Ich hatte einen Hirnfurz, als ich diese Frage stellte. Vielen Dank!
Anständiger Dabbler
1
Die Weiterleitung im PRG-Muster ist jedoch darauf zurückzuführen, dass zugegeben wird, dass die Beibehaltung der "Semantik der Konversation" weniger wichtig ist, als zu verhindern, dass Benutzer mit Schinkenfäusten F5 zerdrücken und die Warnung "Das Formular wird erneut gesendet werden" ignorieren ihren Browser.
Carson63000
Fair genug, weshalb ich die REST-Perspektive erwähnt habe.
Gary Rowe
5

Ich würde im Allgemeinen nicht sagen, da beim Senden eines Formulars mit ungültigen Feldern normalerweise dasselbe Formular mit derselben Feldpopulation und einigen Fehlermeldungen als Antwort bereitgestellt werden soll. Dies wäre mühsam über POST / Redirect / GET durchzuführen. Wie würden Sie sicherstellen, dass die vom GET zurückgegebene Seite bereits die Einträge des Benutzers in den Formularfeldern enthält?

Carson63000
quelle
2
Durch vorübergehendes Speichern des Ergebnisses in einer Sitzung (für die Dauer einer Folgeanforderung)?
Anständiger Dabbler
2
@fireeyedboy: yep, das würde es tun .. scheint aber ein bisschen kludge.
Carson63000