Это не прямой ответ, а немного другое направление дизайна:
Не размещайте данные как форму, но как объект JSON для непосредственного сопоставления с объектом на стороне сервера или используйте переменную пути в стиле REST
Теперь я знаю, что ни один из вариантов не подходит в вашем случае, так как вы пытаетесь передать ключ XSRF. Отображение этого в переменную пути как это ужасный дизайн:
http://www.someexample.com/xsrf/{xsrfKey}
Поскольку по своей природе вы хотите передать XSRF ключа к другому пути тоже /login
, и /book-appointment
т.д. , и вы не хотите испортить ваш довольно URL
Интересно, что добавление его в качестве поля объекта также не подходит, потому что теперь для каждого объекта json, передаваемого на сервер, необходимо добавить поле
{
appointmentId : 23,
name : 'Joe Citizen',
xsrf : '...'
}
Вы, конечно, не хотите добавлять другое поле в свой класс на стороне сервера, которое не имеет прямой семантической ассоциации с объектом домена.
На мой взгляд, лучший способ передать ваш ключ xsrf через HTTP-заголовок. Многие библиотеки веб-фреймворков на стороне сервера защиты xsrf поддерживают это. Например, в Java Spring вы можете передать его с помощью X-CSRF-TOKEN
заголовка .
Отличная возможность Angular связывать JS-объект с UI-объектом означает, что мы можем избавиться от практики публиковать формы все вместе и вместо этого публиковать JSON. JSON можно легко десериализовать в объект на стороне сервера и поддерживать сложные структуры данных, такие как карта, массивы, вложенные объекты и т. Д.
Как вы размещаете массив в форме полезной нагрузки? Может быть так:
shopLocation=downtown&daysOpen=Monday&daysOpen=Tuesday&daysOpen=Wednesday
или это:
shopLocation=downtwon&daysOpen=Monday,Tuesday,Wednesday
Оба плохой дизайн ..