Dies ist keine direkte Antwort, sondern eine etwas andere Designrichtung:
Veröffentlichen Sie die Daten nicht als Formular, sondern als JSON-Objekt, das direkt dem serverseitigen Objekt zugeordnet werden soll, oder verwenden Sie die Pfadvariable im REST-Stil
Jetzt weiß ich, dass keine der beiden Optionen in Ihrem Fall geeignet ist, da Sie versuchen, einen XSRF-Schlüssel zu übergeben. Die Zuordnung zu einer Pfadvariablen wie dieser ist ein schreckliches Design:
http://www.someexample.com/xsrf/{xsrfKey}
Denn von Natur aus wollen Sie auch XSRF Schlüssel zum anderen Weg passieren, /login
, /book-appointment
usw. , und Sie wollen nicht zu verwirren Ihre hübsche URL
Interessanterweise ist das Hinzufügen als Objektfeld ebenfalls nicht geeignet, da Sie jetzt für jedes JSON-Objekt, das Sie an den Server übergeben, das Feld hinzufügen müssen
{
appointmentId : 23,
name : 'Joe Citizen',
xsrf : '...'
}
Sie möchten Ihrer serverseitigen Klasse sicherlich kein weiteres Feld hinzufügen, das keine direkte semantische Zuordnung zum Domänenobjekt hat.
Meiner Meinung nach ist der beste Weg, Ihren xsrf-Schlüssel zu übergeben, ein HTTP-Header. Viele serverseitige Webframework-Bibliotheken mit xsrf-Schutz unterstützen dies. In Java Spring können Sie es beispielsweise über den X-CSRF-TOKEN
Header übergeben .
Die hervorragende Fähigkeit von Angular, JS-Objekte an UI-Objekte zu binden, bedeutet, dass wir die Praxis des gemeinsamen Postens von Formularen loswerden und stattdessen JSON veröffentlichen können. JSON kann leicht in serverseitige Objekte de-serialisiert werden und unterstützt komplexe Datenstrukturen wie Map, Arrays, verschachtelte Objekte usw.
Wie postet man ein Array in einer Formularnutzlast? Vielleicht so:
shopLocation=downtown&daysOpen=Monday&daysOpen=Tuesday&daysOpen=Wednesday
oder dieses:
shopLocation=downtwon&daysOpen=Monday,Tuesday,Wednesday
Beide sind schlechtes Design ..