構築中のアプリケーションに Node.JS で Express.JS を使用しています。ルートを設定し、RESTful アーキテクチャを維持するために最善を尽くしています。
フォーム入力を受け入れ、何らかのエラー (必ずしも検証エラーではない) が発生し、ユーザーに同じフォームを表示するが、最初にサーバーに送信したデータを含むプロセスは何ですか?
最初は、POST データをセッションに保存しましたが、これはハックのように、良い解決策だとは感じませんでした。
次に、ルートを調整し、代わりapp.post|put|del()にフォームの送信を処理するために使用し、そのルートをapp.all()使用して「キャッチオール」として使用しました。基本的に、エラーが発生した場合は、 を呼び出しnext()て、制御を「キャッチオール」ルートに戻します。これにより、元の RESTful アプローチから逸脱することになりました。
これで、RESTful アプローチをより正確に反映するようにルートを設定しました。ただし、を使用するapp.redirect()と、リダイレクトでデータが失われます。別のハックのように感じるものを使用することになりました: controller.new_form.apply(this, arguments);(これは 内で呼び出されますcontroller.create())
もちろん、クライアント側の検証を使用することもできますが、最初に完全にサーバー側で動作するアプリを作成するために最善を尽くしており、それがサポートされているユーザー エクスペリエンスを向上させる方法としてクライアント側のコードを追加しています。
フォーム自体とは異なるURIでフォームアクションを受け入れるexpress.js(またはconnect.js)で使用できるメソッドはありますが、実際にブラウザーをリダイレクトせずに戻ることができるため、フォームにデータが入力されたままになります(およびユーザーにエラーメッセージを表示しますか?