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

湘西刺客王胡子 2021-02-23 16:42:32
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请求会导致特定学生信息资源的状态变更为已创建、已获取(如果有)、已更新、已删除

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

版权声明
本文为[湘西刺客王胡子]所创,转载请带上原文链接,感谢
https://segmentfault.com/a/1190000039263257

  1. J2EE
  2. Vue uses SDK to upload seven cows
  3. k8s-dns
  4. JavaScript mailbox verification - regular verification
  5. k8s-dashboard
  6. How many questions can you answer?
  7. Spring annotation -- transactional
  8. [k8s cluster] construction steps
  9. k8s-kubeadm
  10. k8s-etcd
  11. Using HashMap to improve search performance in Java
  12. There is no class problem when Maven publishes jar package
  13. JavaScriptBOM操作
  14. J2EE
  15. k8s-prometheus-memory
  16. k8s-prometheus disk
  17. k8s-prometheus
  18. JavaScript BOM operation
  19. k8s-prometheus-memory
  20. k8s-prometheus disk
  21. k8s-prometheus
  22. Linux Disk Command
  23. Linux FS
  24. 使用docker-compose &WordPress建站
  25. Linux Command
  26. This time, thoroughly grasp the depth of JavaScript copy
  27. Linux Disk Command
  28. Linux FS
  29. Using docker compose & WordPress to build a website
  30. Linux Command
  31. 摊牌了,我 HTTP 功底贼好!
  32. shiro 报 Submitted credentials for token
  33. It's a showdown. I'm good at it!
  34. Shiro submitted credentials for token
  35. Linux Stress test
  36. Linux Root Disk Extension
  37. Linux Stress test
  38. Linux Root Disk Extension
  39. Redis高级客户端Lettuce详解
  40. springboot学习-综合运用(一)
  41. 忘记云服务器上MySQL数据库的root密码时如何重置密码?
  42. Detailed explanation of lettuce, an advanced client of redis
  43. Springboot learning integrated application (1)
  44. Linux File Recover
  45. Linux-Security
  46. How to reset the password when you forget the root password of MySQL database on the cloud server?
  47. Linux File Recover
  48. Linux-Security
  49. LiteOS:盘点那些重要的数据结构
  50. Linux Memory
  51. Liteos: inventory those important data structures
  52. Linux Memory
  53. 手把手教你使用IDEA2020创建SpringBoot项目
  54. Hand in hand to teach you how to create a springboot project with idea2020
  55. spring boot 整合swagger2生成API文档
  56. Spring boot integrates swagger2 to generate API documents
  57. linux操作系统重启后 解决nginx的pid消失问题
  58. Solve the problem of nginx PID disappearing after Linux operating system restart
  59. JAVA版本号含义
  60. The meaning of java version number