HTTP的“无状态”和REST的“状态转换”

"无状态"的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请求会导致特定学生信息资源的状态变更为已创建、已获取(如果有)、已更新、已删除

所以,这两个“状态”,指的应该不是同一回事。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式。”但是在要求详细讲述它所提出的各个约束,以及如...
    时待吾阅读 3,477评论 0 19
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 翻译约定 primary data: 主数据resource identifier object 资源标识符对象r...
    sladeliu阅读 2,443评论 0 2
  • 今天又是繁忙的一天,下午回到家就天黑了,儿子在认真地写作业,今天的作业做得有点慢,平时这个点基本快做完了,但是...
    厉德豪阅读 195评论 0 0
  • 前面我们聊了聊赤本漫画时代手冢治虫的丰功伟绩,这次,我们接着聊赤本,主要讲讲赤本漫画是如何繁荣起来的。 话说赤本漫...
    醉后长亭阅读 3,264评论 0 4