Questa non è una risposta diretta, ma piuttosto una direzione del design leggermente diversa:
Non pubblicare i dati come modulo, ma come oggetto JSON da mappare direttamente sull'oggetto lato server o utilizzare la variabile percorso REST
Ora so che nessuna delle due opzioni potrebbe essere adatta nel tuo caso poiché stai cercando di passare una chiave XSRF. Mapparlo in una variabile di percorso come questa è un progetto terribile:
http://www.someexample.com/xsrf/{xsrfKey}
Perché per natura vorresti passare la chiave xsrf anche su un altro percorso /login
, /book-appointment
ecc. E non vuoi rovinare il tuo bel URL
È interessante notare che non è appropriato aggiungerlo come campo oggetto, perché ora su ciascuno degli oggetti json che passi al server devi aggiungere il campo
{
appointmentId : 23,
name : 'Joe Citizen',
xsrf : '...'
}
Certamente non vuoi aggiungere un altro campo alla tua classe lato server che non abbia un'associazione semantica diretta con l'oggetto dominio.
A mio avviso, il modo migliore per passare la chiave xsrf è tramite un'intestazione HTTP. Molte librerie web framework lato server di protezione xsrf lo supportano. Ad esempio in Java Spring, puoi passarlo usando l' X-CSRF-TOKEN
intestazione .
L'eccellente capacità di Angular di associare l'oggetto JS all'oggetto dell'interfaccia utente ci consente di sbarazzarci della pratica di pubblicare tutti i moduli insieme e di pubblicare invece JSON. JSON può essere facilmente serializzato in oggetti lato server e supportare strutture dati complesse come mappe, array, oggetti nidificati, ecc.
Come si inserisce un array in un payload del modulo? Forse così:
shopLocation=downtown&daysOpen=Monday&daysOpen=Tuesday&daysOpen=Wednesday
o questo:
shopLocation=downtwon&daysOpen=Monday,Tuesday,Wednesday
Entrambi sono design scadente ..