GET&POST&PUT&DELETE 旧城等待, 2023-06-18 02:55 27阅读 0赞 根据HTTP标准,HTTP请求可以使用多种请求方法。 HTTP的1.0版本中只有三种请求方法: GET, POST 和 HEAD方法。到了1.1版本时,新增加了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。此篇着重学习GET,POST,PUT,DELETE,可初步理解为 1、POST /url 创建 2、DELETE /url/xxx 删除 3、PUT /url/xxx 更新 4、GET /url/xxx 查看 **一、****GET****:****请求指定的页面信息,并返回实体主体。** GET请求请提交的数据放置在HTTP请求协议头中,GET方法通过URL请求来传递用户的输入,GET方式的提交需要用Request.QueryString来取得变量的值。 GET方法提交数据,可能会带来安全性的问题,数据被浏览器缓存。 GET请求有长度限制。 E.g. // 发起请求 http://localhost/general/form/getpost.asp?Text=Hello+World // 解析请求参数(asp语法) <% If Request.QueryString(“Text”) <> ““ Then %> 通过get方法传递来的字符串是: “<B><%= Request.QueryString(“Text”) %></B>“<BR> <% End If %> **二、****POST****:****向指定资源提交数据进行处理请求(例如提交表单或者上传文件)****需要中间代理** POST请求可能会导致新的资源的建立和/或已有资源的修改。 POST方式提交时,你必须通过Request.Form来访问提交的内容 E.g. // 发起请求 http://localhost/general/form/getpost.asp // 解析请求参数(asp语法) <% If Request.Form(“Text”) <> ““ Then %> 通过Post方法传递来的字符串是: “<B><%= Request.Form(“Text”) %></B>“<BR> <% End If %> **三、****PUT****:****从客户端向服务器传送的数据取代指定的文档的内容** **四、****DELETE****:****请求服务器删除指定的页面** DELETE请求一般返回3种码 200(OK)——删除成功,同时返回已经删除的资源。 202(Accepted)——删除请求已经接受,但没有被立即执行(资源也许已经被转移到了待删除区域)。 204(No Content)——删除请求已经被执行,但是没有返回资源(也许是请求删除不存在的资源造成的)。 * **区别** 1、PUT和POST (1)PUT和POS都有更改指定URI的语义.但PUT被定义为idempotent的方法,POST则不是.idempotent的方法*(**如果一个方法重复执行多次,产生的效果是一样的,那就是idempotent的。**)*也就是说: PUT请求:如果两个请求相同,后一个请求会把第一个请求覆盖掉。(所以PUT用来**改资源**) POST请求:后一个请求不会把第一个请求覆盖掉。(所以Post用来**增资源**) (2)POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。 (3)POST主要作用在一个集合资源之上的(url),而PUT主要作用在一个具体资源之上的(url/xxx),通俗一下讲就是,如URL可以在客户端确定,那么可使用PUT,否则用POST。 2、GET和POST (1)GET参数通过URL传递,POST放在Request body中。 (2)GET请求会被浏览器主动cache,而POST不会,除非手动设置。 (3)GET请求参数会被**完整保留**在浏览器历史记录里,而POST中的参数**不会被保留**。 (4)Get 请求中有非 ASCII 字符,会在请求之前进行转码,POST不用,因为POST在Request body中,通过 MIME,也就**可以传输非 ASCII** 字符。 (5)一般我们在浏览器输入一个网址访问网站都是GET请求 (6)HTTP的底层是TCP/IP。HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。但是请求的数据量太大对浏览器和服务器都是很大负担。所以业界有了不成文规定,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。 (7)GET产生**一个**TCP数据包;POST产生**两个**TCP数据包。对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。 (8)在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。(*但并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。**)* (9)GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用,无论进行多少次操作,结果都是一样的。与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。 参考资料: [https://blog.csdn.net/potato512/article/details/76696582][https_blog.csdn.net_potato512_article_details_76696582] [https://blog.csdn.net/qq\_36183935/article/details/80570062][https_blog.csdn.net_qq_36183935_article_details_80570062] [https://blog.csdn.net/haif\_city/article/details/78333213][https_blog.csdn.net_haif_city_article_details_78333213] [https_blog.csdn.net_potato512_article_details_76696582]: https://blog.csdn.net/potato512/article/details/76696582 [https_blog.csdn.net_qq_36183935_article_details_80570062]: https://blog.csdn.net/qq_36183935/article/details/80570062 [https_blog.csdn.net_haif_city_article_details_78333213]: https://blog.csdn.net/haif_city/article/details/78333213
还没有评论,来说两句吧...