2015-01-09 2 views
0

У меня есть игра! рамки (2.3.7) приложение, которое имеет несколько маршрутов:Play Framework - Сохранение состояния объекта по нескольким вызовам

/api/set_x 
/api/set_y 
/api/set_z 
/api/launch 

Каждый из этих вызовов задает свойство в экземпляре MyObject. Когда вызывается /api/launch, экземпляр MyObject проверяется, и если все в порядке, оно будет сохранено и 200 OK будет возвращено пользователю.

Как сохранить состояние экземпляра на нескольких вызовах до тех пор, пока не будет вызвано /api/launch?

  1. Использование сеанса кажется плохим, так как в игре сеанс - это всего лишь куки-файл, ограниченный 4 КБ.
  2. Использование кеша - если кеш выведен, я не могу снова восстановить экземпляр, что означает, что пользователь может предоставить все свойства, но перед вызовом /api/launch кэш был удален, и будет возвращен неправильный запрос вместо OK для пользователя.

Есть ли элегантный способ реализовать такую ​​вещь в Play?

ответ

1

У вас нет лучшего решения проблемы. В основном это зависит от конкретного варианта использования. Для сохранения данных между запросами у вас есть три возможных варианта:

  • сессия или печенье играть в
  • некоторые кэш-слой
  • база данных

Одной из главной особенности рамок Play в настоящее время без гражданства на стороне сервера, и это должно всегда иметь в виду при разработке приложения. Поэтому, если вы ищете «элегантное» решение, ответ прост - таких нет. Все дело в конкретном случае.

+0

Итак, я могу сохранить их в БД и убедиться, что у меня есть планировщик, который стирает старые записи в этой БД. – apines

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