“ 无状态 ” 的 HTTP
了解 HTTP 协定的无状态,需理解 HTTP 的“无连贯”性,说的是一个申请产生一个连贯,申请处理完毕,连贯即断开。所以客户端和服务端的信息沟通都是一次性的。
对应的“有连贯”性,可用 TCP,或者指定了 Keep-Alive 的 HTTP 连贯来示意。
因为 HTTP 的无连接性,服务端对客户端的状态信息不做保留,也就是单次申请的内容与上次申请不存在连贯性,客户端需在每次申请时将所有信息进行传递才可实现,并且申请产生的后果相互不存在关联性。
当然,有了 session 和 cookie,所有都变得不一样了
这一块网上的解释都比拟含混,有一个深究的帖子能够参考:http 协定无状态中的 “ 状态 ” 到底指的是什么?!
能“状态转换”的 REST
REST 外面的 ST(state translate),指的是 RE 所代表的体现层,也就是针对提供进去的各类对于资源状态的 URI 来讲的,对于状态转换,我是这么了解的:
对于所暴露出的服务资源,依照 REST 的格调要求,应提供对一组 CRUD 操作方法的服务反对,而 CRUD 动作,是会对相应资源有显著的状态影响的(除了 R),因而这里的状态,是针对资源而讲的,指的是申请的后果。
如,对于一个学生信息资源入口 /student/{studentId}/,提交的 CRUD 申请会导致特定学生信息资源的状态变更为已创立、已获取(如果有)、已更新、已删除
所以,这两个“状态”,指的应该不是同一回事。