java - 在基于 RESTful 的应用程序中管理状态

标签 java rest jax-rs

我们正在评估用于基于 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/

相关文章:

java - 如何让 IntellijIDEA 忽略正在进行的类文件?

cookies - Jersey:我可以在 ContainerResponseFilter 中添加 cookie 吗?

java - 如何使用 hashmap 通过数据库检索不同 editText 的值

java - 如何更改 jar 文件的编码以管理 "█▓▒ CRIT! ░░╚╡▌▌╞╗░░"等字符?

java - 使用 JDBC 创建表查询不适用于不同的数据库引擎

java - 如何处理同一域模型的多个 'views'?

php - 在 PUT、PATCH、DELETE ... 请求中使用 php 读取 multipart/form-data 的原始请求正文

rest - 将 JAX-RS 应用程序部署到 Tomcat 时出现 IncompatibleClassChangeError

apache - 从 apache cxf REST 响应中删除空值字段

rest - 什么是最好的 JAX-RS 库?