POST / Redirect / GET z nieprawidłowym przesłaniem formularza?


Odpowiedzi:


10

Z perspektywy REST konwersacja internetowa powinna przebiegać w ten sposób

GET / przykład

200 OK - zawiera pusty formularz HTML

Użytkownik wypełnia formularz

POST / przykład

formfield1 = ok

formfield2 = zły

400 ZŁE WNIOSEK - zawiera wypełniony formularz HTML z błędami

Użytkownik identyfikuje problem ze złożeniem formularza i rozwiązuje go

POST / przykład

formfield1 = ok

formfield2 = naprawiony

201 TWORZONY - zawiera HTML z komunikatem o sukcesie i dalszymi linkami (także nagłówek lokalizacji dla klientów REST) ​​lub 200 OK i 204 BRAK TREŚCI są akceptowane

Nie ma potrzeby wprowadzania przekierowania, a to przerwałoby semantykę konwersacji.


1
O wow, tak, jak mogłem zapomnieć o REST lub ogólnie o różnych kodach stanu HTTP. Miałem pierdnięcie mózgu, gdy zadałem to pytanie. Dzięki!
Przyzwoity Dabbler

1
Przekierowanie we wzorcu PRG wynika jednak z faktu, że utrzymanie „semantyki konwersacji” jest mniej ważne niż zapobieganie zacieraniu F5 przez użytkowników z szynką i ignorowanie ostrzeżenia „który prześle formularz ponownie”. ich przeglądarka.
Carson63000,

W porządku, dlatego wspomniałem o perspektywie REST.
Gary Rowe,

5

Powiedziałbym ogólnie, że nie, ze względu na to, że gdy formularz jest wysyłany z niepoprawnymi polami, to co zwykle chcesz podać w odpowiedzi, to ten sam formularz z tą samą populacją pól, a także niektóre komunikaty o błędach. Byłoby to uciążliwe, aby wykonać za pomocą POST / Redirect / GET - w jaki sposób upewniłbyś się, że strona zwrócona przez GET ma już wpisy użytkownika w polach formularza?


2
Przez tymczasowe zapisanie wyniku w sesji (na czas jednego żądania uzupełniającego)?
Przyzwoity Dabbler

2
@fireeyedboy: tak, to by to zrobiło ... wydaje się trochę kłopotliwe.
Carson63000,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.