これは直接的な答えではなく、デザインの方向性が少し異なります。
データをフォームとしてではなく、サーバー側オブジェクトに直接マップされる JSON オブジェクトとして投稿するか、REST スタイルのパス変数を使用します。
XSRFキーを渡そうとしているので、どちらのオプションもあなたのケースには適していない可能性があることがわかりました。このようなパス変数へのマッピングはひどい設計です:
http://www.someexample.com/xsrf/{xsrfKey}
/login
本質的に、xsrf キーを他のパス/book-appointment
などにも渡したいため、きれいな URL を台無しにしたくないためです。
興味深いことに、オブジェクト フィールドとして追加することも適切ではありません。これは、サーバーに渡す各 json オブジェクトでフィールドを追加する必要があるためです。
{
appointmentId : 23,
name : 'Joe Citizen',
xsrf : '...'
}
ドメイン オブジェクトとの直接的なセマンティック アソシエーションを持たない別のフィールドをサーバー側クラスに追加したくないことは確かです。
私の意見では、xsrf キーを渡す最善の方法は、HTTP ヘッダーを使用することです。多くの xsrf 保護サーバー側 Web フレームワーク ライブラリがこれをサポートしています。たとえば Java Spring では、X-CSRF-TOKEN
headerを使用して渡すことができます。
JS オブジェクトを UI オブジェクトにバインドする Angular の優れた機能により、フォームをまとめて投稿するという慣習をなくし、代わりに JSON を投稿できるようになります。JSON はサーバー側オブジェクトに簡単にデシリアライズでき、マップ、配列、ネストされたオブジェクトなどの複雑なデータ構造をサポートします。
フォーム ペイロードに配列を投稿するにはどうすればよいですか? 多分このように:
shopLocation=downtown&daysOpen=Monday&daysOpen=Tuesday&daysOpen=Wednesday
またはこれ:
shopLocation=downtwon&daysOpen=Monday,Tuesday,Wednesday
どちらもデザインがイマイチ…