无状态状态在RESTfull服务中意味着什么



我已经读了一周关于REST的文章,我所能说的一切都可以在1分钟内学会,我可以使用HTTP请求,如GET/POST/PUT/DELETE来操作网站的内容

但是,当人们描述REST时,什么是无状态和其他无法理解的术语?

为什么我不能通过像这样的$_GET['']方法http://localhost/register.php?id=1&username=bob将内容添加到数据库中呢?在这里,我使用了所谓的$_GET[]方法-我认为这与REST(GET/PUT)方法不同-并将信息插入数据库,而不是使用更复杂的方法来理解

什么是无状态

无状态是支持可伸缩性、可见性和可靠性的特定体系结构约束。菲尔丁在论文的第三章对此进行了描述。

从客户端到服务器的每个请求都必须包含理解请求所需的所有信息,并且不能利用服务器上存储的任何上下文。会话状态完全保留在客户端上。

这些约束改善了可见性、可靠性和可扩展性的特性。可见性得到了提高,因为监控系统不必为了确定请求的全部性质而超越单个请求数据。可靠性得到了提高,因为它简化了从部分故障中恢复的任务[133]。由于不必在请求之间存储状态,服务器组件可以快速释放资源,并进一步简化实现,因此可扩展性得到了提高。

客户端无状态服务器的缺点是,它可能会增加在一系列请求中发送的重复数据(每次交互开销),从而降低网络性能,因为这些数据不能留在共享上下文中的服务器上。

简而言之,HTTP支持这种体系结构约束是它能够如此成功的原因之一。

为什么我不能直接向数据库添加内容

当然,您可以修改服务器状态;也就是说;资源";,以响应HTTP请求。在这种情况下,您在某种程度上受到HTTP的约束(例如,GET应该具有只读语义)。

但是,服务器不应该对当前客户端状态做出任何无法在当前处理的消息中证明的假设。

最新更新