ユーザーがWebアプリケーションにデータをポストしたばかりで、現在のページに成功または失敗のメッセージを再表示するとします。これは複雑になります。HTTP POSTから送信できるすべての方法をどのように処理しますか?
データが有効で、ユーザーがhtmlが必要な場合は、リダイレクトを発行して、リフレッシュによって再ポストされないようにしたいとします。リファラーが存在する場合はそれをリダイレクトして、メッセージを表示します。彼らがhtmlを期待していない場合は、単に200 OKを返すことができます。
データが無効で、ユーザーがhtmlを予期している場合は、表示されたページを再レンダリングして、再表示できるように目に見えるエラーを表示します。これを行うには、以前の操作を実行し、エラーメッセージを認識させる必要があります。前のアクションがどれかを決定するために、おそらくフォームに隠れたパラメータとしてそれを含めました。 htmlを期待していない場合は、該当する4xxクライアントエラーを返すことができます。
私は自分自身がこの愚かなダンスを何度もやっていることがわかります。したがって、質問は次のとおりです。
1)どのようにフォームの投稿でも活用できるように、このプロセス全体を抽象化しますか?
2)あなたのお気に入りのWebフレームワークでこれを達成するには、最もメンテナンス可能な、
3)この全体のプロセスを簡単にするために変更することはありますか?
アイデア1:投稿にはレンダリングしないでください。常にリダイレクトされます。成功メッセージと同じように、エラーデータをセッション間で分割してリクエスト間に入れ、クリアします。そうすれば、有効な投稿と無効な投稿を同じように扱うことができます。
アイデア2:通常のHTTP投稿をしないでください。 ajaxだけを使用してください。レンダリングやリダイレクトを心配する必要はありません。これは、すでにajaxに重いアプリケーションがある場合にのみ役立ちます。
私はどこから来ているのか分からないと仮定しています。私はしばしば、異なるページから同じURLに投稿して、アクションを再利用したいという状況に遭遇します。データが無効で、リダイレクトする代わりにレンダリングしている場合は、前の操作を直感的に理解する必要があります。私はまだリファラーからこのことを知ることができると思います。 –