Как управлять состоянием в REST
Я думаю, этот вопрос покажется знакомым, но я еще один программист, озадаченный REST.
У меня есть традиционное веб-приложение, которое переходит из StateA в StateB и так далее. Если пользователь переходит на (URL) StateB, я хочу убедиться, что он посетил StateA раньше. Традиционно я делаю это, используя состояние сеанса.
Поскольку состояние сеанса не разрешено в REST, как мне этого добиться?
1 ответ
На это есть 2 ответа REST, в зависимости от того, что конкретно вы пытаетесь сделать.
Если вы действительно пытаетесь управлять состоянием на основе запросов (например, когда пользователь работает через многоэкранный мастер или какой-либо другой рабочий процесс на основе навигации), то ответ REST заключается в том, что состояние следует отправлять взад и вперед с каждый запрос / ответ (используя что-то вроде скрытого текстового поля, строки запроса или данных POST, хранящихся в форме). Это реализация шаблона проектирования "Состояние клиента" Мартина Фаулера (подробно описано в его книге " Шаблоны архитектуры корпоративных приложений"; см. Ссылку здесь).
Если, с другой стороны, вы пытаетесь управлять каким-то новым объектом на сервере - например, корзиной покупок - тогда ответ REST заключается в том, что вы фактически создаете новую сущность, к которой можно получить доступ, как и к любой другой, с помощью прямой URL. Независимо от того, сохраняете ли вы этот новый объект в базе данных или в памяти приложения (например, традиционный объект Session), зависит только от вас, но в любом случае, новый объект не столько о "состоянии" на сервере, сколько о создании нового. сущность для пользователя, чтобы взаимодействовать с.