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
之前在多个调用中保持实例的状态?
- 使用会话似乎很糟糕,因为在游戏中会话只是一个 cookie,限制为 4KB。
- 使用缓存 - 如果缓存被逐出我无法再次重建实例,这意味着用户可以提供所有属性但在调用
/api/launch
之前缓存被逐出并且请求错误而不是 OK 将返回给用户。
有没有一种优雅的方法可以在 Play 中实现这样的功能?
没有针对您的问题的最佳解决方案,主要取决于具体用例。要在请求之间保留数据,您有三种可能的选择:
- Play 的会话或 cookie
- 一些缓存层
- 一个数据库
Play 框架的主要特征之一是在服务器端无状态,在设计应用程序时应始终牢记这一点。因此,如果您正在寻找 'elegant' 解决方案,答案很简单 - 没有这样的解决方案。视具体情况而定。
我有戏!具有多个路由的框架 (2.3.7) 应用程序:
/api/set_x
/api/set_y
/api/set_z
/api/launch
这些调用中的每一个都会在 MyObject
的实例中设置一个 属性。
当 /api/launch
被调用时, MyObject
的实例被验证,如果一切正常,它将被持久化并返回 200 OK 给用户。
如何在调用 /api/launch
之前在多个调用中保持实例的状态?
- 使用会话似乎很糟糕,因为在游戏中会话只是一个 cookie,限制为 4KB。
- 使用缓存 - 如果缓存被逐出我无法再次重建实例,这意味着用户可以提供所有属性但在调用
/api/launch
之前缓存被逐出并且请求错误而不是 OK 将返回给用户。
有没有一种优雅的方法可以在 Play 中实现这样的功能?
没有针对您的问题的最佳解决方案,主要取决于具体用例。要在请求之间保留数据,您有三种可能的选择:
- Play 的会话或 cookie
- 一些缓存层
- 一个数据库
Play 框架的主要特征之一是在服务器端无状态,在设计应用程序时应始终牢记这一点。因此,如果您正在寻找 'elegant' 解决方案,答案很简单 - 没有这样的解决方案。视具体情况而定。