HTTP中的GET,POST,PUT,DELETE请求方式的区别

您所在的位置:网站首页 get和post请求方式的不同 HTTP中的GET,POST,PUT,DELETE请求方式的区别

HTTP中的GET,POST,PUT,DELETE请求方式的区别

2024-04-10 21:27| 来源: 网络整理| 查看: 265

前言

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。

URL全称是统一资源定位符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。

GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。

四种方法说明 GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。DELETE请求,就是用来删除某一个资源的,该请求就像数据库的delete操作。

PUT和POST操作都是向服务器端发送数据的,那么两者有什么区别呢?

POST主要作用于一个集合资源上的( url ),PUT主要作用于一个具体资源上的( url/xxx ),通俗地说,如果url在客户端可以确定,则使用PUT,否则使用POST。 GET和POST请求有什么区别?

这个问题虽然看上去很初级,但实际上却涉及到方方面面,这也就是为什么面试里经常问这个的原因之一。

我们先来说下浏览器的GET和POST

这里特指浏览器中不是Ajax的HTTP请求,即从HTML和浏览器诞生就一直使用的HTTP协议中的GET/POST。浏览器用GET请求来获取一个html页面/图片/css/js等资源;用POST来提交一个表单,并得到一个结果的网页。

浏览器将GET和POST定义为:

GET

“读取“一个资源。比如Get到一个html文件。反复读取不应该对访问的数据有副作用。比如”GET一下,用户就下单了,返回订单已受理“,这是不可接受的。没有副作用被称为“幂等”。

因为GET因为是读取,就可以对GET请求的数据做缓存。这个缓存可以做到浏览器本身上(彻底避免浏览器发请求),也可以做到代理上(如nginx),或者做到server端(至少可以减少带宽消耗)

POST

在页面里 标签会定义一个表单。点击其中的submit元素会发出一个POST请求让服务器做一件事。这件事往往是有副作用的,不幂等的。

不幂等也就意味着不能随意多次执行。因此也就不能缓存。比如通过POST下一个单,服务器创建了新的订单,然后返回订单成功的界面。这个页面不能被缓存。试想一下,如果POST请求被浏览器缓存了,那么下单请求就可以不向服务器发请求,而直接返回本地缓存的“下单成功界面”,却又没有真的在服务器下单。那是一件多么滑稽的事情。

因为POST可能有副作用,所以浏览器实现为不能把POST请求保存为书签。想想,如果点一下书签就下一个单,是不是很恐怖的事情?。

此外如果尝试重新执行POST请求的操作,浏览器也会弹一个框提示下这个刷新可能会有副作用,询问要不要继续。

综上所述,我们对两者区别总结如下:

GET把请求的数据参数放在地址栏URL上,其格式为:

以?分割URL和传输数据,参数之间以&相连。

POST把数据放在HTTP的请求体内(requrest body)。

POST理论上没有限制,GET请求有长度限制。

GET产生一个TCP数据包,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

POST产生两个TCP数据包,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

GET在浏览器回退时是无副作用的,POST会再次提交请求。

GET产生的URL地址可以被Bookmark,而POST不可以。

GET请求会被浏览器主动缓存,而POST不会,除非手动设置。

GET请求只能进行url编码,而POST支持多种编码方式。

GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

那么,post那么好为什么还用get?因为get效率高!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3