POST / Redirect / GET con envío de formulario no válido?

11

En el campo del desarrollo web, ¿es una buena práctica hacer un POST / Redirect / GET cuando los campos en el envío de un formulario también son inválidos?

Por lo general, no se habría realizado ninguna transacción confidencial, en este caso. Sin embargo, ¿se puede argumentar que, sin embargo, sigue siendo una buena práctica utilizar el patrón POST / Redirect / GET?

Dabbler decente
fuente

Respuestas:

10

Desde una perspectiva REST, la conversación web debería ser así

OBTENER / ejemplo

200 OK - contiene un formulario HTML vacío

El usuario completa el formulario

POST / ejemplo

formfield1 = ok

formfield2 = malo

400 MALA SOLICITUD - contiene HTML de forma poblada con errores

El usuario identifica el problema con el envío del formulario y lo corrige

POST / ejemplo

formfield1 = ok

formfield2 = fijo

201 CREADO: contiene HTML con mensaje de éxito y enlaces en adelante (también encabezado de ubicación para clientes REST) ​​o 200 OK y 204 SIN CONTENIDO son aceptables

No es necesario introducir una redirección, y rompería la semántica de la conversación para hacerlo.

Gary Rowe
fuente
1
O wow, sí, ¿cómo podría haberme olvidado de REST, o simplemente de los diferentes códigos de estado HTTP en general? Tuve un pedo cerebral al hacer esta pregunta. ¡Gracias!
Dabbler decente el
1
Sin embargo, la redirección en el patrón de PRG se debe a la admisión de que mantener la "semántica de la conversación" es menos importante que evitar que los usuarios forzados aplasten F5 e ignoren la advertencia "que volverá a enviar el formulario ..." su navegador
Carson63000
Bastante justo, por eso mencioné la perspectiva REST.
Gary Rowe
5

En general, diría que no, debido a que cuando un formulario se PUBLICA con campos no válidos, lo que normalmente desea responder es el mismo formulario con la misma población de campos, más algunos mensajes de error. Esto sería oneroso de realizar a través de POST / Redirect / GET: ¿cómo se aseguraría de que la página devuelta por GET ya tuviera las entradas del usuario en los campos del formulario?

Carson63000
fuente
2
¿Al almacenar temporalmente el resultado en una sesión (durante la duración de una solicitud de seguimiento)?
Dabbler decente el
2
@ fireeyedboy: sí, eso lo haría ... parece un poco un error.
Carson63000