Play Framework - 跨多个调用保存对象状态

Play Framework - Saving object state across multiple calls

我有戏!具有多个路由的框架 (2.3.7) 应用程序:

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

这些调用中的每一个都会在 MyObject 的实例中设置一个 属性。 当 /api/launch 被调用时, MyObject 的实例被验证,如果一切正常,它将被持久化并返回 200 OK 给用户。

如何在调用 /api/launch 之前在多个调用中保持实例的状态?

  1. 使用会话似乎很糟糕,因为在游戏中会话只是一个 cookie,限制为 4KB。
  2. 使用缓存 - 如果缓存被逐出我无法再次重建实例,这意味着用户可以提供所有属性但在调用 /api/launch 之前缓存被逐出并且请求错误而不是 OK 将返回给用户。

有没有一种优雅的方法可以在 Play 中实现这样的功能?

没有针对您的问题的最佳解决方案,主要取决于具体用例。要在请求之间保留数据,您有三种可能的选择:

  • Play 的会话或 cookie
  • 一些缓存层
  • 一个数据库

Play 框架的主要特征之一是在服务器端无状态,在设计应用程序时应始终牢记这一点。因此,如果您正在寻找 'elegant' 解决方案,答案很简单 - 没有这样的解决方案。视具体情况而定。