2011-12-23 3 views
3

Мы оцениваем технологию, которая будет использоваться для веб-приложения, а также некоторые предложения по использованию подхода на основе RESTful. Технология StackУправление состоянием в приложении RESTful

1) Spring 2) Apache CXF (JAX-RS)

Мои вопросы

1) Как государство управляется между запросами. Например, пользователь прошел аутентификацию, и теперь он делает серию запросов, разрешающих просматривать разбитый отчет. Я бы себе представить, URL для этого будет как

domain.com/reports/customreport/page/1 domain.com/reports/customreport/page/2 и т.д ...

а) Где информация о пользователе & хранится так, чтобы он мог быть разделен между запросами. b) Допустим, что результат передается, где хранится Rowset?

Есть ли полное приложение для примера, похожее на Petclinic, которое может обеспечить лучшие практики для такого приложения.

ответ

4

Если вы выполняете RESTful строго/правильно, аутентификация пользователя выполняется в каждом запросе и нет понятия сеанса. Каждый запрос содержит достаточную контекстную информацию (в параметрах URL и/или запроса), чтобы позволить ей работать независимо от сеанса.

1) Как регулируется состояние между запросами.

Он должен управляться клиентом.

a) Где находится информация пользователя & Параметры запроса хранятся так, чтобы они могли делиться между запросами.

Информация об аутентификации пользователя хранится клиентом и предоставляется на сервере с каждым запросом. Сервер будет пересчитывать любую производную информацию о пользователе по каждому запросу. Любые параметры запроса, которые обычно сохраняются в сеансе на стороне сервера, должны быть переданы заново с каждым запросом.

b) Допустим, результат передается, где хранится строка Rowset?

В первый миг, нигде. Запрос каждый раз переиздается с параметром, указывающим, куда пропустить. Если производительность является проблемой, вы можете

  • упреждающего чтения несколько страниц из набора результатов и сохранить их в кэше на стороне сервера, или
  • настроить кэширование запросов к базе данных для запроса.
3

1) Информация пользователя не хранится нигде, пользователь должен отправить свои учетные данные (или любой другой метод аутентификации, который вы используете) для каждого отдельного запроса.

2) Streaming не имеет особого смысла в RESTful API, если вы хотите сделать потокового я очень советую вам искать что-то вроде WebSockets (в Java вы можете легко сделать это with Jetty)

Если вы сказали, что потоковая передача, но вы имели в виду разбитые на страницы результаты, то же, что и , никакого состояния не осталось, клиент должен отправить новый запрос со всей информацией, и сервер должен запросить базу данных (или перейти в кэш, или сделать что-либо необходимо) и вернуть результат клиенту.

Вы также должны прочитать больше о REST, так как ваш вопрос довольно расплывчатым, один хороший старт книга Restful Web Services или, если вы чувствуете приключений, вы можете попробовать Roy Fielding dissertation, который определил, что мы называем сегодня REST.

Смежные вопросы