Более простое решение:
Это интересная проблема, и есть много способов сделать это.Мой первый инстинкт - попытаться отключить то, что видит пользователь от требований ваших сервисов.Я предполагаю, что вы просто используете HTML-форму для публикации, возможно, стоит сделать ajax-запрос и затем вместо этого перенаправить пользователя с помощью кода на стороне клиента (на стороне браузера).Таким образом, вы можете публиковать в /golf/member
, API может просто вернуть 201 Created
, и ваш код на стороне клиента может переместить их на следующий шаг, который может быть /golf/arena
, который может сделать то же самое снова.
Более продвинутое решение:
Если это большая особенность с множеством различных полей, я бы, возможно, даже подумал бы сделать еще один шаг вперед.Вы можете получить код на стороне сервера, чтобы обеспечить весь «поток» для пользователя.Например ...
У вас может быть конечная точка, похожая на POST /feature/start
, эта конечная точка может возвращать некоторый json, например:
{
"title": "Form page 1",
"form": {
"title": "Form title",
"fields": [
{ "title": "first name", "type": "input" },
{ "title": "surname", "type": "input" }
],
"actions": [
{ "label": "Next", "type": "button", "method": "POST", "url": "/feature/next"
]
}
}
Каждый шаг может затем вернуть новую версиюэтой стандартной структуры JSON, вы можете затем интерпретировать эту структуру JSON на стороне клиента и использовать ее для отображения необходимой вам формы на каждом шаге.
Выше приведен только пример, и URL-адреса можно было бы назвать лучше, но conept будет означать, что вы запускаете сбор данных со стороны сервера и просто используете внешний интерфейс для создания HTML, а затем собираете значения и отправляете их в бэкэнд-сервис.Это может быть очень удобно для систем больших форм, таких как регистрация на паспорт или что-то еще.Тогда ваш интерфейс довольно тупой, и вам нужно только изменить код на стороне сервера, если вам нужно добавить или удалить шаги / поля.