Как принудительно использовать «сеансы» в веб-службах RESTful с помощью RESTlet?

Я новичок в веб-службах RESTful и RESTlet. У НАС есть только опыт создания веб-приложений на основе сервлетов (Servlet / JSP на JBoss / Apache). Теперь мы создаем приложение на основе RESTlet, в котором API на стороне сервера будет использоваться двумя типами клиентов - веб-браузером и Swing на основе рабочего стола.

Я понимаю, что в соответствии с концепцией REST а) сервер не может поддерживать сеансы для улучшения масштабируемости и по ряду других причин б) каждый запрос от клиента должен быть автономным

Теперь я действительно не понимаю, как этого добиться. Предположим, мы возьмем простое приложение корзины покупок.

Шаг 1) Клиент отправляет запрос аутентификации, сервер аутентифицируется, и сервер отвечает OK.

Шаг 2) Клиент отправляет запрос на добавление товара в корзину. Сервер отвечает ОК.

Шаг 3) Клиент отправляет еще один запрос на добавление 2-го товара в карточку покупок. Сервер отвечает ОК.

Обычно в обычном веб-приложении сеанс создается на шаге 1 на сервере, и с этого момента все запросы, относящиеся к этому клиенту, автоматически связываются с одним и тем же сеансом, и мы сохраняем состояние сеанса (в данном случае корзина для покупок ) в объекте сеанса и получить / обновить его с последующими запросами от клиента.

Теперь, в приведенном выше сценарии:

1) как мы аутентифицируем и авторизуем клиента на шагах 2 и 3, если на сервере не поддерживается сеанс?

2) Нужно ли клиенту отправлять дополнительную информацию с каждым запросом?

3) Как мы получаем корзину покупок для конкретного клиента на шаге 3?

4) Нужно ли клиенту отправлять свою тележку покупок, которая был создан / возвращен сервером на шаге 2 снова на шаге 3?

Очевидно, что это простейший вариант использования, и поэтому каждый, кто разрабатывает веб-службы RESTful, должен разрабатывать свое приложение, чтобы справиться с этим. Каков наилучший и наиболее распространенный способ управления сеансами, аутентификации и авторизации в веб-службах RESTful с помощью RESTLet? Если нам нужно поддерживать кеш на стороне сервера с данными клиента, то чем это отличается от сервера, поддерживающего сеансы от нашего имени?

Заранее спасибо, Deep

9
задан DG. 10 October 2011 в 10:45
поделиться