在RESTful API中使用会话是否真的违反了RESTfulness?我已经看到许多意见朝着任何方向发展,但是我不相信会议是RESTless的。从我的观点:
- RESTfulness禁止身份验证(否则RESTful服务将很少使用)
- 通过在请求中发送身份验证令牌(通常是标头)来完成身份验证
- 该身份验证令牌需要以某种方式获得,并且可能会被吊销,在这种情况下,需要对其进行续订
- 身份验证令牌需要由服务器验证(否则将不是身份验证)
那么会话如何违反此规定?
- 客户端,使用cookie实现会话
- Cookies只是一个额外的HTTP标头
- 可以随时获取并撤消会话Cookie
- 如果需要,会话cookie可以有无限的生存时间
- 会话ID(身份验证令牌)在服务器端经过验证
因此,对于客户端而言,会话cookie与任何其他基于HTTP标头的身份验证机制完全相同,只是它使用Cookie
标头代替Authorization
或其他专有标头。如果没有会话附加到Cookie值服务器端,那为什么会有所作为?只要服务器表现为 RESTful ,服务器端的实现就不必关心客户端。因此,Cookie本身不应使API 成为RESTless,而会话只是客户端的Cookie。
我的假设错了吗?是什么使会话cookie 无需REST?