無効なフォーム送信でのPOST /リダイレクト/ GET?


11

Web開発の分野では、フォーム送信のフィールドが無効な場合にもPOST / Redirect / GETを実行することをお勧めしますか?

通常、この場合、機密性の高いトランザクションは発生しません。ただし、それにもかかわらず、POST / Redirect / GETパターンを利用することは依然として良い習慣であるという主張をすることができますか?

回答:


10

RESTの観点から、Web会話は次のようになります。

GET / example

200 OK-空のフォームHTMLを含む

ユーザーがフォームに入力します

POST /例

formfield1 = ok

formfield2 = bad

400 BAD REQUEST-エラーのあるフォームのHTMLが含まれています

ユーザーがフォーム送信の問題を特定し、修正します

POST /例

formfield1 = ok

formfield2 = fixed

201 CREATED-成功メッセージとオンワードリンク(RESTクライアント用のLocationヘッダーも含む)を含むHTMLまたは200 OKおよび204 NO CONTENTが許容される

リダイレクトを導入する必要はありません。リダイレクトを導入すると、会話のセマンティクスが損なわれます。


1
ああ、うん、どうすればRESTを忘れていたのか、一般的なHTTPステータスコードだけを忘れていたのか。この質問をするとき、私は頭がおならでした。ありがとう!
まともなダブラー

1
ただし、PRGパターンのリダイレクトは、「会話のセマンティクス」を維持することは、ハムフィストのユーザーがF5をマッシングして「フォームを再送信する」警告を無視することを防ぐよりも重要でないと認めているためです。彼らのブラウザ。
Carson63000

それで十分です。これが、RESTの観点について言及した理由です。
ゲイリーロウ

5

フォームに無効なフィールドがPOSTされた場合、通常、応答で提供するのは、同じフィールド数の同じフォームとエラーメッセージであるという理由で、一般的にそうではありません。これは、POST / Redirect / GETを介して実行するのは面倒です-GETによって返されたページのフォームフィールドにユーザーのエントリがすでにあることをどのように確認しますか?


2
結果を一時的にセッションに保存することにより(1回のフォローアップリクエストの期間)?
まともなダブラー

2
@fireeyedboy:ええ、それでいいでしょう。
Carson63000
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.