浅谈 GET 和 POST 区别
浏览器的get和post有什么区别?第1个从他们字面意思去理解这些,就是从网页上获取一个数据。然后这个获取数据是对服务器不会产生副作用的,术语就是数学上的 幂等
即多次操作不产生影响(比如任何数乘1或者乘0,多次乘之后,都不会变化),那样多次操作也不会去产生副作用。那post那这个就是一个单词就是邮寄的意思,相当于是要本地的数据传到服务器,那这个操作就会对服务器的数据更新或者创建,就会造成一个影响,它是有副作用的,对应的就是不幂等
。
第2个是安全性,从安全性讲的话,他们两个都是不太安全的,比较常见的是,那是get直接可以在后面加query string来发送每一个get。那post相对应的,除了有query string,还有body,那因此所有比较重要的信息都放在body里面
,这样就可以。相对的保证在浏览器那个地址里面看不到,那这样的话是通过SSL协议
通过加密http协议,就是https,那这样就保证了我们的get 和 post,它是相对应该安全的。
第3部分是针对测试需要做的工作,有返回码、内容、无效格式参数等
。针对get的特性制定,对应的第1个是返回的一个状态码。第2个还是通过根据的Query string参数获取的返回的值是不是一个正确,还多次返回多次get它们两个值是不是相等的,对应的无效格式是否有正确的响应。在POST测试相关的话,也是同样的这三个点,第1个是返回的状态,第2个是POST后,然后用GET或者对应的值,对比POST和GET的值相匹配。最后一个就是errorhandling测试,这部分测试的话主要是测试一个。参数格式是否正确,还有就是非要请求的一个测试。
关于http状态码返回的一个信息,有4类,那第1xx就是一开头的它是一个消息性的(这一类型的状态码,代表请求已被接受,需要继续处理)。2xx成功的。3xx是重定向,4xx是客户端的,5xx相对应的就是服务器的
。
第1个一开头的话这种。应用场景的话是对一些在需要继续操作的。比如说在post大文件或者是大数据之前做一个校验或者分批传送(stream api)这种那就会先对一个客户端建立一个TCP协议,返回一个1xx状态,就是代表可以通信的,然后再开始发布再推送后面的一个消息体,不是每次就把所有的数据传上去,然后等对方服务器去解析这个参数再来做一个回应,但是在一个小段内容里面就可以获取到你一个状态,然后再做后面的一个操作,就避免不必要的带宽的浪费。
第2个的话,开头的比较常见的就是200,这种我们最常见的,比如说请求成功都会返回一个200。
第3个是一个重定向。这里在遇到情况是比较少的,比如说像304这种。他就是代表你之前有没有在缓存中或者之前有访问过这个文件或者下载过这个文件,有的话就不需要重新,传输资源。
第4开头的话,这个比较常见。是客户端的一个错误,比如说像401 400 403 404。这种404是没找到,然后403是没有权限。
5xx的话就是一个服务器错误,比如说500就是服务器内部程序可能出现了一个Crash之类的,按502也是这种。
版权声明: 本文为 InfoQ 作者【叉叉敌】的原创文章。
原文链接:【http://xie.infoq.cn/article/f1f5e0d04d1dec2cf6d2bd8e0】。文章转载请联系作者。
评论