2011-12-23 86 views
3

我们正在评估用于基于Web的应用程序的技术,并提出一些建议,以使用基于REST的服务方法。 技术堆栈在基于REST的应用程序中管理状态

1)春 2)的Apache CXF(JAX-RS)

我的问题是

1)如何状态请求之间管理。例如,用户已通过身份验证,现在他提出了一系列请求,可以说通过分页报告。我可以想象这个网址就会像

domain.com/reports/customreport/page/1 domain.com/reports/customreport/page/2 等等

一)在哪里存储用户信息&请求参数,以便它可以在请求之间共享。 b)比方说结果正在流式传输,Rowset存储在哪里?

是否有一个类似于Petclinic的完整示例应用程序,可以提供此类应用程序的最佳实践。

回答

4

如果您严格/正确地执行RESTful,那么用户身份验证将在每个请求中完成,并且没有会话的概念。每个请求都包含足够的上下文信息(在URL和/或请求参数中)以允许它独立于会话工作。

1)请求之间如何管理状态。

它必须由客户端管理。

a)用户信息&在哪里存储,以便它可以在请求之间共享。

用户身份验证信息由客户端存储并随每个请求一起提供给服务器。服务器将重新计算每个请求上关于用户的派生信息。任何通常存储在服务器端“会话”中的请求参数都必须在每次请求时重新传递。

b)比方说结果正在流式传输,Rowset存储在哪里?

在第一瞬间,无处可见。该查询每次重新发布一个参数,说明要跳到哪里。如果性能是一个问题,你可以

  • 预读结果集的几页,并将它们存储在服务器端缓存,或
  • 调为查询数据库查询缓存。
3

1)用户信息没有存储在任何地方,用户必须在每个请求中发送他的凭证(或者你使用的任何认证方法)。

2)流没有多大意义的RESTful API,因此如果你想办的流我大大建议你去寻找类似的WebSockets(在Java中,你可以很容易地做到这一点with Jetty

如果您表示流式传输,但意味着分页结果,与相同,则不存在任何状态,客户端必须发送一个包含所有信息的新请求,并且服务器必须查询数据库(或转至缓存,或者做任何需要的)并将结果返回给客户。

你也应该阅读更多关于REST,你的问题是相当模糊的,一个好的开始是成功的Restful Web Services书,或者,如果你喜欢冒险,你可以尝试Roy Fielding dissertation该定义的今天就是我们所说的REST。

相关问题