一个 API 何时用 GET、POST 甚至 PUT 请求。

首先引入一个副作用的概念,副作用指当你发送完一个请求以后,网站上的资源状态没有发生修改,即认为这个请求是无副作用的。比如注册用户这个请求是有副作用的,获取用户详情可以认为是无副作用的。

再引入一个幂等性的概念,幂等是说,一个请求原封不动的发送N次和M次(N不等于M,N和M都大于1)服务器上资源的状态最终是一致的。比如发贴是非幂等的,重放10次发贴请求会创建10个帖子。但修改帖子内容是幂等的,一个修改请求重放无论多少次,帖子最终状态都是一致的。

唠叨了这么多,回过头来,何时用 PUT POST GET DELETE:

GET:无副作用,幂等

PUT:副作用,幂等

POST:副作用,非幂等

DELETE:副作用,幂等

这么看的话,DELETE 和 PUT 请求好像毫无区别。为了进一步区分这些请求方式的应用场景,我们再引入一个技术特性,request body,就是大家广为流传的 "POST 请求传输数据量比较大“ 这一说法的来源。POST/PUT 请求可以通过传递 request body 来发送大量的数据,而 GET/DELETE 不能。

所以上面的表格需要再加一项:

GET:无副作用,幂等,不可带 Request Body

PUT:副作用,幂等,可以带 Request Body

POST:副作用,非幂等,可以带 Request Body

DELETE:副作用,幂等,不可带 Request Body

html post与get的区别,post 和get请求的区别(html)相关推荐

  1. C++中结构体与类的区别(struct与class的区别)

    C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能. struct能包含成员函数吗? 能! struct能继承吗? 能!! s ...

  2. java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别

    java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别 参考文章: (1)java ...

  3. adaboost和GBDT的区别以及xgboost和GBDT的区别

    adaboost和GBDT的区别以及xgboost和GBDT的区别 AdaBoost:提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值.这样一来,那些没有得到正确分类的数据, ...

  4. Http中的Post和GET请求的区别

    原理区别: 一般我们在浏览器输入一个网址访问网站都是GET请求,获取Html文件到浏览器运行. GET - (获取数据)从指定的服务器中获取数据Get,是向服务器发索取数据的一种请求,Get是获取信息 ...

  5. 问题小结(二)——maven的核心功能、面向对象编程和面向接口编程的区别、抽象类和接口的区别等

    文章目录 1. Java创建对象有哪四种方式? 2. 什么是maven?maven的核心功能有哪些? 3. 什么是MVC?说说分层的好处. 4. Spring的两大核心技术是什么? 5. 什么是IOC ...

  6. [html] title与h1的区别、b与strong的区别、i与em的区别?

    [html] title与h1的区别.b与strong的区别.i与em的区别? title 是 网页标题标签 h1 是文本标签 默认与word的h1相似为最大的标题显示 b 为文本加粗标签 与word ...

  7. JSP、Servlet中get请求和post请求的区别总结

    在学习JavaWeb最初的开始阶段,大家都会遇到HttpServlet中的doGet和doPost方法.前两天看<Head First Servlets & JSP>看到其中讲关于 ...

  8. 同步请求和异步请求的区别

    同步请求和异步请求的区别 先解释一下同步和异步的概念 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式.   异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据 ...

  9. JavaScript中Element与Node的区别,children与childNodes的区别

    关于Element跟Node的区别,cilldren跟childNodes的区别很多朋友弄不清楚,本文试图让大家明白这几个概念之间的区别. Node(节点)是DOM层次结构中的任何类型的对象的通用名称 ...

最新文章

  1. 了解过去与理解现在的一把钥匙
  2. DFS(6)——hdu1342Lotto
  3. 我收集的网上公开的免费电子书
  4. NLP深度学习:近期趋势概述 1
  5. QThread使用——关于run和movetoThread的区别
  6. 定义简单类-接收对象的变量同样是对对象的引用
  7. 福建职称计算机评聘任,职称聘任工作的有关补充规定(试行)
  8. 用计算机探索规律的ppt,用计算机探索规律.ppt
  9. .Net混淆研究(一)---基本原理和利弊
  10. 观看台式计算机组成观后感,计算机组成原理实验一:运算器实验
  11. python后台架构Django教程——路由映射urls
  12. 前端 encodeURI 为什么要编码两次
  13. Linux ERROR: configuration failed for package ‘rgeos’
  14. Word文档中去除EndNote格式
  15. k8s paas部署
  16. 用html和css制作日历,CSS3制作日历
  17. 市场估值-指数PE讨论
  18. 小米红米Note12,11,Pro系列安装谷歌套件谷歌服务框架GMS,Google Play商店
  19. mysql: [Warning] Using a password on the command line interface can be insecure.解决方法
  20. KubeSphere 多行日志采集方案深度探索

热门文章

  1. TCP/IP模型的简单解释
  2. cv2.show()cv2.waitKey()cv2.VideoCapture()的使用
  3. Zabbix全攻略(已测试,含客户端教程,适用debian8\centos7)
  4. 把一个数插入c语言,[求助] 把一个数插入一个已经从小到大排列好的数列中
  5. Oracle RAC的Failover
  6. 分数等级_山东新高考:quot;6选3quot;等级考分数是怎么换算出来的
  7. java类注解是否可以通过实现接口或继承父类的方式获得
  8. TYVJ1467 通往聚会的道路
  9. SOAP(Simple Object Access Protocol )简单对象访问协议
  10. dojo的TabContainer竖排摆放tab标签