我们正在评估用于基于 Web 的应用程序的技术,一些建议是采用基于 RESTful 的服务方法。 技术栈
1) Spring 2) Apache CXF (JAX-RS)
我的问题是
1) 如何在请求之间管理状态。例如,用户已经过身份验证,现在他正在发出一系列请求,假设要查看分页报告。我想这的 URL 会像
domain.com/reports/customreport/page/1 domain.com/reports/customreport/page/2 等等……
a) 用户信息和请求参数存储在哪里,以便可以在请求之间共享。 b) 假设结果正在流式传输,Rowset 存储在哪里?
是否有类似于 Petclinic 的完整示例应用程序可以为此类应用程序提供最佳实践。
最佳答案
如果您严格/正确地执行 RESTful,则在每个请求中完成用户身份验证,并且没有 session 的概念。每个请求都包含足够的上下文信息(在 URL 和/或请求参数中)以允许它独立于 session 工作。
1) How state is managed between requests.
必须由客户端管理。
a) Where is the user information & request parameters are stored so that it can be shared between requests.
用户身份验证信息由客户端存储,并随每个请求提供给服务器。服务器将根据每个请求重新计算有关用户的任何派生信息。任何通常存储在服务器端“ session ”中的请求参数都必须随每个请求重新传递。
b) Lets say the result is being streamed, where is Rowset is stored?
在第一瞬间,无处可去。每次都会重新发出查询,并带有一个参数,说明要跳到哪里。如果性能是个问题,您可以
- 预读结果集的几页并将它们存储在服务器端缓存中,或者
- 为查询调整数据库查询缓存。
关于java - 在基于 RESTful 的应用程序中管理状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8611451/