POST / Redirect / GET avec une soumission de formulaire invalide?

11

Dans le domaine du développement Web, est-ce une bonne pratique de faire un POST / Redirect / GET lorsque les champs dans une soumission de formulaire sont également invalides?

En règle générale, aucune transaction sensible n'aurait eu lieu, dans ce cas. Cependant, un argument peut-il être avancé selon lequel, néanmoins, il est toujours recommandé d'utiliser le modèle POST / Redirect / GET?

Dabbler décent
la source

Réponses:

10

Du point de vue REST, la conversation Web devrait se dérouler comme suit

GET / exemple

200 OK - contient un formulaire HTML vide

L'utilisateur remplit le formulaire

POST / exemple

formfield1 = ok

formfield2 = mauvais

400 BAD REQUEST - contient un formulaire HTML rempli avec des erreurs

L'utilisateur identifie le problème avec la soumission du formulaire et le corrige

POST / exemple

formfield1 = ok

formfield2 = fixe

201 CRÉÉ - contient du HTML avec un message de réussite et des liens ultérieurs (également en-tête d'emplacement pour les clients REST) ​​ou 200 OK et 204 AUCUN CONTENU sont acceptables

Il n'est pas nécessaire d'introduire une redirection, et cela briserait la sémantique de la conversation pour ce faire.

Gary Rowe
la source
1
O wow, ouais, comment aurais-je pu oublier REST, ou simplement différents codes d'état HTTP en général. J'ai eu un pet de cerveau en posant cette question. Merci!
Decent Dabbler
1
La redirection dans le modèle PRG, cependant, est due à l'admission que le maintien de la "sémantique de la conversation" est moins important que d'empêcher les utilisateurs à poings durs de broyer F5 et d'ignorer le message "qui soumettra à nouveau le formulaire .." leur navigateur.
Carson63000
Assez juste, c'est pourquoi j'ai mentionné la perspective REST.
Gary Rowe
5

Je ne dirais généralement pas, au motif que lorsqu'un formulaire est POSTÉ avec des champs invalides, ce que vous voulez normalement servir en réponse est le même formulaire avec la même population de champs, plus quelques messages d'erreur. Cela serait onéreux à effectuer via POST / Redirect / GET - comment vous assurer que la page renvoyée par le GET contenait déjà les entrées de l'utilisateur dans les champs du formulaire?

Carson63000
la source
2
En stockant temporairement le résultat dans une session (pour la durée d'une demande de suivi)?
Decent Dabbler
2
@fireeyedboy: oui, ça le ferait .. semble un peu compliqué cependant.
Carson63000