美文网首页
4:Web基础扩展(2)(Get请求和Post请求的区别)

4:Web基础扩展(2)(Get请求和Post请求的区别)

作者: _River_ | 来源:发表于2021-04-09 19:15 被阅读0次
1:常见回答
1:Get请求  把请求参数放在URL中  Post请求 把请求参数放在请求体(request body)中
2:Get请求  有长度限制  Post请求 没有长度限制

应用层面:
Get请求通常配合表单  如果需要放入JSON 到表单中注意接收方的格式转换
Post请求通常配合表单   或者   JSON(使用@RequestBody)
2:存在问题
问题:         
Get请求参数   为什么有长度限制      
Get请求参数   能不能放在请求体(request body)中         

运输公司:不同的浏览器(发起http请求)+不同的服务器(接受http请求) 

假如说运输的时候是一辆车:

Get请求:给车顶堆货物
Post请求:在车内堆货物

理论上你可以在车顶上无限的堆货物(url中无限加参数)。
但是运输公司可不傻,装货和卸货也是有很大成本的,
他们会限制单次运输量来控制风险,数据量太大对浏览器和服务器都是很大负担。

业界不成文的规定是:
(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。
超过的部分,恕不处理。

如果你用GET服务,在request body偷偷藏了数据,
不同服务器的处理方式也是不同的,
有些服务器会帮你卸货,读出数据,
有些服务器会直接忽略,所以,也不能保证一定能被接收到。
     
如何在Get请求里面偷偷塞数据到 request body 中
可以使用curl命令,
事例如下:curl -XGET -H "Content-Type:application/json"   
            "http://host:port/requestmapping" -d '{"paramId":[1,2,3]}'
3:真正的区别
那么Get请求和Post的真正区别是什么?
GET产生一个TCP数据包;POST产生两个TCP数据包。
    
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
对于POST方式的请求,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

的确是可以通过把post请求改为get请求来优化网站性能

相关文章

网友评论

      本文标题:4:Web基础扩展(2)(Get请求和Post请求的区别)

      本文链接:https://www.haomeiwen.com/subject/wundkltx.html