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

时间:2017-02-05 13:39:33

标签: php rest methods get

我已经阅读了一周关于REST的内容,我可以在1分钟内学到所有关于它的知识,我可以使用HTTP请求,例如 GET / POST / PUT / DELETE < / em>操纵网站的内容

但是当人们描述REST时,什么是无国籍和其他难以理解的术语?

为什么我不能通过$_GET['']这样的http://localhost/register.php?id=1&username=bob方法向数据库添加内容,这里我使用了所谓的$_GET[]方法 - 我认为不同于< em> REST(GET / PUT)方法 - 并将信息插入到数据库中,而不是使用以更复杂的方式执行相同操作的内容

1 个答案:

答案 0 :(得分:0)

  

什么是无国籍状态

无状态是支持扩展,可见性和可靠性的特定架构约束。菲尔丁在third chapter of his dissertation中描述了它。

  

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

     

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

     

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

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

  

为什么我只能将内容添加到数据库

当然,您可以修改服务器状态;也就是说,“资源”的状态,响应HTTP请求。在这种情况下,你受到HTTP的限制(例如,GET应该有read-only semantics)。

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