Нужно ли отправлять запрос POST по тому же пути или по пути к следующей странице? - PullRequest
0 голосов
/ 17 декабря 2018

Допустим, мы разрабатываем веб-сайт, для получения которого от пользователя требуется несколько шагов.Пользователь отправит данные, используя POST, и получит HTML-страницу формы, используя GET.Когда пользователь отправляет форму, должна ли она быть отправлена ​​по тому же маршруту или по следующему?

допустим, что текущая форма страницы: /golf/member/
форма следующей страницы: /golf/arena/

метод 1 (публикация на той же странице):
- POST до /golf/member/
- перенаправить на /golf/arena/

метод 2 (опубликовать на следующей странице):
- POST на /golf/arena/
- перенаправить на /golf/arena/

1 Ответ

0 голосов
/ 17 декабря 2018

Более простое решение:

Это интересная проблема, и есть много способов сделать это.Мой первый инстинкт - попытаться отключить то, что видит пользователь от требований ваших сервисов.Я предполагаю, что вы просто используете 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, а затем собираете значения и отправляете их в бэкэнд-сервис.Это может быть очень удобно для систем больших форм, таких как регистрация на паспорт или что-то еще.Тогда ваш интерфейс довольно тупой, и вам нужно только изменить код на стороне сервера, если вам нужно добавить или удалить шаги / поля.

...