Skip to main content
 首页 » 编程设计

web-services之我们可以使Restful Webservice成为有状态的吗

2025年05月04日130leader

我一直在阅读有关Restful webservices是无状态的。
我还可以看到,大多数基于Soap的Web服务也是无状态的,可以根据需要将其设置为有状态,并且使它们成为有状态将取决于实现。
因此,如果基于soap的Web服务是有状态的,则 session ID将随每个请求一起传递,以继续 session 。

我的查询是为什么使用Restful Web服务不能完成相同的工作,我认为我应该能够实现一个Web服务,该Web服务可以与同一 session 继续进行,其中Restful Web服务传递的 session ID是有状态的。

所以我的问题是,RestFul Webservices是否只是一个有指导性的概念,而不是使其具有状态?还是在Restful网络服务库(例如Jersey)中进行检查以阻止人们这样做?

请您参考如下方法:

REST的无状态性旨在确保应用程序扩展良好。您可以添加状态,但要在可伸缩性方面进行权衡。

向REST添加状态的最常见原因之一是身份验证。一旦建立了安全连接,就可以将安全cookie发送到客户端。然后,客户端将此Cookie添加到该 session 的所有请求中。服务器维护状态,然后根据cookie将每个请求加载到该状态。

考虑一个简单的网页。如果不保持状态,则可以建立反向代理,通过URL将页面缓存在内存中,然后将该资源分配到许多服务器上以进行加载。如果现在将当前登录用户的名称添加到该网页,则无法再缓存任何内容(至少在最基本的HTTP级别上)。现在只能使用身份验证cookie和URL的组合来缓存响应。