我们正在评估用于基于Web的应用程序的技术,并且一些建议是基于RESTful的服务方法。 技术堆栈
1)春天 2)Apache CXF(JAX-RS)
我的问题是
1)如何在请求之间管理状态。例如,用户已经过身份验证,现在他正在发出一系列请求,让我们通过分页报告。我想这个的URL就像
domain.com/reports/customreport/page/1 domain.com/reports/customreport/page/2 等...
a)用户信息&存储请求参数,以便可以在请求之间共享。 b)假设结果是流式传输,Rowset存储在哪里?
是否有类似于Petclinic的完整示例应用程序可以为此类应用程序提供最佳实践。
答案 0 :(得分:4)
如果您正在严格/正确地执行RESTful,那么在每个请求中都会进行用户身份验证,并且没有会话的概念。每个请求都包含足够的上下文信息(在URL和/或请求参数中),以使其独立于会话工作。
1)如何在请求之间管理状态。
必须由客户管理。
a)用户信息&存储请求参数,以便可以在请求之间共享。
用户身份验证信息由客户端存储,并随每个请求提供给服务器。服务器将在每个请求上重新计算有关用户的任何派生信息。通常存储在服务器端“会话”中的任何请求参数必须在每次请求时重新传递。
b)假设结果是流式传输,Rowset存储在哪里?
在第一个瞬间,无处可去。每次使用参数说明要跳到的位置重新发出查询。如果性能是一个问题,你可以
答案 1 :(得分:3)
1)用户信息不会存储在任何地方,用户必须在每个请求上发送他的凭据(或您正在使用的任何身份验证方法)。
2)在RESTful API中流式传输没有多大意义,如果你想做流式传输,我会建议你去寻找像WebSockets这样的东西(在Java中你很容易做到这一点with Jetty)
如果您说流式传输,但您的意思是分页结果,与 1 相同,则没有保留状态,客户端必须发送包含所有信息的新请求,并且服务器必须查询数据库(或转到缓存,或做任何需要的事情)并将结果返回给客户。
您还应该阅读有关REST的更多信息,因为您的问题非常模糊,一个好的开始是 Restful Web Services 一书,或者,如果您有冒险精神,可以试试{{3}我们今天定义了我们称之为REST的东西。