REST完全无状态,可能吗?

任何人都可以给我一个真正的无状态RESTful端点的例子吗? 一个简单的问题,如果服务器是完全无状态的,我们如何使以前的令牌无效? 我认为将状态保存到DB是一种不好的做法。 可以说每秒有数百个请求,这意味着每秒对数据库的数百次查询(如果将状态保存到数据库),那就是坏消息。 如果您将状态保存到服务器,则在使用多个服务器和负载平衡器时会遇到会话传输问题。


当然,一个例子当然是不需要验证的端点,并且依赖于你的结构还有其他的。 例如,如果您使用的是AngularJS之类的东西,您不需要像使用开发者API那样以相同的方式进行授权 - 您可以使用会话变量,这些变量可以是有签名的,也可以是无状态的。

如果您担心在像这样简单的状态下执行数据库查询的性能,那么值得查看像Redis这样的一些解决方案,您可以发送数百个查询来以非常小的压力。


根据定义,无状态宁静端点不会使用令牌(有生命期)或状态。 如果你需要这些,那么你就没有一个真正的无状态的宁静端点。

作为对您的问题的回答,没有身份验证或类似机制的Web服务器可被视为真正的无状态休息端点。 它只是将GET请求中的文件从磁盘传送给请求它的任何人。

此外,如果身份验证是硬编码的基本身份验证或类似的机制在每个请求上发送登录详细信息,它仍然是无状态的。 当你开始添加过期的令牌时,你肯定已经有了状态。

有关以无状态REST方式进行身份验证的详细信息,您可以阅读本次讨论。

链接地址: http://www.djcxy.com/p/7055.html

上一篇: REST completely stateless, possible?

下一篇: an other but different about rest and sessions