在RESTful API中使用会话是否真的违反了RESTfulness?我看到很多意见朝着两个方向发展,但我不相信会话是无REST的.在我看来,我的观点是:
会话如何违反这一点?
因此,对于客户端,会话cookie与任何其他基于HTTP头的身份验证机制完全相同,除了它使用Cookie头而不是Authorization其他专有头.如果cookie值服务器端没有附加会话,为什么会产生影响呢?只要服务器表现为 RESTful ,服务器端实现就不需要关注客户端.因此,cookie本身不应该使API无REST,而会话只是客户端的cookie.
我的假设是错的吗?什么使会话cookie RESTless?
我听说了RESTful API should be stateless. All state info should be kept on client side.
但是当我从网页发出ajax调用时,我注意到会话ID cookie总是被发送到服务器.使用该会话ID,我可以在服务器上获取会话对象.因此,我可以get/set some state info in the session.
这会破坏code of being statelessRESTful API吗?
(我的问题的背景如下.)
我尝试通过调用RESTful API来实现登录页面以验证用户名和密码.
每次用户尝试访问我的站点的页面时,登录servlet filter将检查该用户的session(这是getSession()被调用的地方),以查看是否存在有效的登录信息.如果没有,登录过滤器会将用户重定向到登录页面.
在登录页面上,使用用户名和密码对服务器上的RESTful API进行ajax调用.根据RESTful API的返回结果,页面上的JavaScript将决定是否让用户进入我的网站.
所以,在这种情况下,我有点必须使用session.
详细代码位于此处: 此登录逻辑是否通过RESTful呼叫声音?