在工作中我们不管是测接口还是性能都会遇到要选择请求方式,有很多同学使用起来不是很清楚,这里做几点汇总
Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求。
1. Get是获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改。
2. Get传输的数据有大小限制,因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了,不同的浏览器对URL的长度的限制是不同的。
3. GET请求的数据会被浏览器缓存起来,用户名和密码将明文出现在URL上,其他人可以查到历史浏览记录,数据不太安全。Request.QueryString来获取Get方式提交来的数据。
4. Post请求则作为http消息的实际内容发送给web服务器,数据放置在HTML Header内提交,Post没有限制提交的数据。
5. Post比Get安全,当数据是中文或者不敏感的数据,则用get,因为使用get,参数会显示在地址,对于敏感数据和不是中文字符的数据,则用post。
6. POST表示可能修改变服务器上的资源的请求,在服务器端,用Post方式提交的数据Request.Form来获取。
1、GET请求一般用去请求获取数据,
POST一般作为发送数据到后台时使用
2、GET请求也可传参到后台,但是其参数在浏览器的地址栏的url中可见,所以隐私性安全性较差,且参数长度也是有限制的
POST请求传递参数放在Request body中,不会在url中显示,比GET要安全,且参数长度无限制
3、GET请求刷新浏览器或回退时没有影响
POST回退时会重新提交数据请求
4、GET 请求可被缓存
POST 请求不会被缓存
5、GET 请求保留在浏览器历史记录中
POST 请求不会保留在浏览器历史记录中
6、GET 请求可被收藏为书签
POST 不能被收藏为书签
7、GET请求只能进行url编码(application/x-www-form-urlencoded)
POST支持多种编码方式(application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。)
8、GET请求比较常见的方式是通过url地址栏请求
POST最常见是通过form表单发送数据请求
三、进一步理解
个人查了一些资料后的理解:
post请求和get请求都是HTTP的请求方式,本质上来说并无区别,底层实现都是基于TCP/IP协议。
但是请求有各种各样的方式,于是HTTP对请求方式进行了划分和规定,于是产生了get、post处理请求的分工和区别。
此外还有搜索到另外一个区别:GET产生一个TCP数据包;POST产生两个TCP数据包。
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。