Как управлять состоянием в REST - PullRequest
31 голосов
/ 15 апреля 2010

Думаю, этот вопрос покажется вам знакомым, но я - еще один программист, озадаченный REST.

У меня есть традиционное веб-приложение, которое переходит из StateA в StateB и так далее. Если пользователь переходит на (URL) StateB, я хочу убедиться, что он посетил StateA раньше. Традиционно я делаю это, используя состояние сеанса.

Поскольку состояние сеанса не разрешено в REST, как мне этого добиться?

1 Ответ

50 голосов
/ 15 апреля 2010

На это есть 2 ответа REST, в зависимости от того, что конкретно вы пытаетесь сделать.

Если вы действительно пытаетесь управлять состоянием на основе запроса (например, когда пользователь работает через многоэкранный мастер или какой-то другой рабочий процесс на основе навигации), тогда ответ REST заключается в том, что состояние должно быть отправлено обратно и -при каждом запросе / ответе (используя что-то вроде скрытого текстового поля, строки запроса или данных POST, хранящихся в форме). Это реализация шаблона проектирования "Состояние клиента" Мартина Фаулера (подробно изложенного в его книге Шаблоны архитектуры корпоративных приложений ; см. здесь для справки ).

Если, с другой стороны, вы пытаетесь управлять каким-то новым объектом на сервере - например, корзиной покупок - тогда ответ REST заключается в том, что вы фактически создаете новую сущность, к которой можно получить доступ, например: любой другой по прямому URL. Независимо от того, сохраняете ли вы этот новый объект в базе данных или в памяти приложения (например, традиционный объект Session), зависит только от вас, но в любом случае, новый объект не столько о «состоянии» на сервере, сколько о создании нового объект для взаимодействия с пользователем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...