POST / Redirect / GET com envio de formulário inválido?


Respostas:


10

De uma perspectiva REST, a conversa na web deve ser assim

GET / exemplo

200 OK - contém formulário vazio HTML

O usuário preenche o formulário

POST / exemplo

formfield1 = ok

formfield2 = ruim

400 BAD REQUEST - contém HTML de formulário preenchido com erros

O usuário identifica o problema com o envio do formulário e o corrige

POST / exemplo

formfield1 = ok

formfield2 = fixo

201 CREATED - contém HTML com mensagem de sucesso e links posteriores (também cabeçalho de local para clientes REST) ​​ou 200 OK e 204 NO CONTEÚDO são aceitáveis

Não há necessidade de introduzir um redirecionamento, e isso quebraria a semântica da conversa.


1
Uau, sim, como eu poderia ter esquecido o REST ou apenas os diferentes códigos de status HTTP em geral. Eu tive um peido cerebral ao fazer esta pergunta. Obrigado!
Decent Dabbler

1
O redirecionamento no padrão PRG, no entanto, ocorre devido a uma admissão de que a manutenção da "semântica da conversa" é menos importante do que impedir que usuários malucos esmagem o F5 e ignorem o aviso "que reenviará o formulário". seu navegador.
precisa saber é o seguinte

É justo, e foi por isso que mencionei a perspectiva REST.
Gary Rowe

5

Eu diria que geralmente não, com o argumento de que, quando um formulário é enviado com campos inválidos, o que você normalmente deseja exibir em resposta é o mesmo formulário com a mesma população de campos, além de algumas mensagens de erro. Isso seria oneroso para executar via POST / Redirect / GET - como você garantiria que a página retornada pelo GET já tivesse as entradas do usuário nos campos do formulário?


2
Armazenando temporariamente o resultado em uma sessão (pela duração de uma solicitação de acompanhamento)?
Decent Dabbler

2
@fireeyedboy: sim, isso faria isso .. parece um pouco de desdém.
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.