POST / Переадресація / GET з недійсним поданням форми?


11

Чи є корисною практикою в галузі веб-розробок робити POST / перенаправлення / GET, коли поля у формі подання форми також недійсні?

Зазвичай жодної чутливої ​​транзакції в цьому випадку не відбулося б. Однак чи можна зробити аргумент, що, тим не менш, все ще є хорошою практикою використання моделі POST / Перенаправлення / GET?

Відповіді:


10

З точки зору REST, веб-розмова повинна йти так

GET / приклад

200 ОК - містить порожню форму HTML

Користувач заповнює форму

POST / приклад

formfield1 = добре

formfield2 = погано

400 BAD ЗАПИТУВАННЯ - містить заселений формою HTML з помилками

Користувач ідентифікує проблему з поданням форми та виправляє її

POST / приклад

formfield1 = добре

formfield2 = фіксований

201 СТВОРЕНО - містить HTML із повідомленням про успіх та подальшими посиланнями (також заголовок місцеположення для REST-клієнтів) або 200 ОК та 204 НЕ ЗМІСТ прийнятні

Не потрібно вводити переадресацію, і це порушило б семантику розмови, щоб це зробити.


1
О, так, як я міг забути про REST або просто різні коди статусу HTTP взагалі. У мене був мозок перде, коли задавали це питання. Дякую!
Гідний даблер

1
Однак, переспрямовування в шаблоні PRG існує через визнання, що підтримка "семантики розмови" є менш важливим, ніж запобігання користувачеві, що перебуває в кулаках, перетираючи F5 і ігнорує "що повторно подасть форму .." попередження від їх браузер.
Carson63000

Досить справедливо, саме тому я згадав перспективу REST.
Gary Rowe

5

Я б сказав, як правило, ні, виходячи з того, що коли форма POSTed з недійсними полями, те, що ви зазвичай хочете подавати у відповідь, - це та сама форма з тією ж сукупністю полів, плюс деякі повідомлення про помилки. Це було б важко виконати через POST / Redirect / GET - як би ви гарантували, що на сторінці, поверненій GET, вже були записи користувача у полях форм?


2
Тимчасово зберігаючи результат у сеансі (протягом одного наступного запиту)?
Гідний Даблер

2
@fireeyedboy: Так, це зробить це. Здається, трохи хитрість.
Carson63000
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.