前提
本文主要是记录一下接口测试相关基础知识,不涉及接口测试代码相关,可以说是一个学习笔记。
工欲善其事,必先利其器,打好基础真的很重要!!!!
HTTP协议的组成
目前大部分移动端与服务端之间都是通过 HTTP 协议进行数据交互的,一般是四种方法( Get、Post、Put、Delete)其中用的最多的应该也是Get和Post请求。
HTTP是一个应用层的协议,是一种网络交互需要遵守的一种协议规范
主要由三个部分组成:
1.请求(Request)
2.响应(Response)
3.相应的信息头(Response Header 和 Request Header)
HTTP URL格式 : [http]://[host]:[port]path]
其中:
1.http 表示要通过 HTTP 协议来定位网络资源;
2.host 表示合法的 Internet 主机域名或IP地址;
3.port 用于指定一个端口号,如果为空,则使用缺省的端口 80;
4.path 指定请求资源的具体地址。
HTTP请求
HTTP请求和响应格式
向服务器发出请求时,实际上向服务器传递了一个数据块,也就是请求信息,由3部分组成:
1.请求方法、URI 协议、版本;
2.请求头(Request Header);
3.请求参数。
特别说明:
1.Cookies:可以理解为客户端保存信息的一种机制,用于记录一些信息,也是实现Session的一种方式
2.Session:可以理解为在服务端保存一个数据结构,可以用于某些状态和属性
一般请求是Cookie和Session都放在请求头里
同样的,在接受服务器的响应时,也是3部分组成:
1.协议版本、状态码、 描述;
2.响应头;
3.响应正文。
其中常见的状态码200/404/500等,一般我们需要更多地关注200
HTTP请求过程
1.连接:建立一个socket连接,因为scoket是通过ip和端口建立的,在这之前还会进行DNS解析将于明解析成对应的IP地址
2.请求:连接成功后,向服务器发送GET/POST请求
3.响应:服务器收到这个请求,进行处理,再讲相应数据传送回客户端
4.关闭连接:响应结束后,客户端与服务器断开连接,以保证其他客户端与服务器建立连接
GET,一般用于获取信息,将数据放置与HTTP协议头中;参数受限于URL长度
POST,一般用于向服务器提交数据。没有大小限制
GET参数通过URL传递,POST放在Request Body中
GET与POST的一些区别
最直观的区别,上面已经提到了:GET把参数包含在URL中,POST通过request body传递参数,其他的还没一些类似的回答,比如:
1.GET请求相对POST请求,不安全,将所有的参数直接暴露在URL中(感觉等于没说。。。POST请求F12查看一下,也可以轻易看出来,呵呵呵呵呵)
2.GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留
3.GET请求会被浏览器主动cache,而POST不会,除非手动设置。
可是我看了一篇文章,居然说二者没有本质区别。。。我的老天,来看一下究竟怎么回事。
GET和POST是什么?HTTP协议中的两种发送请求的方法。
HTTP是什么?HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。
HTTP的底层是TCP/IP,所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。
GET和POST还有一个重大区别:
GET产生一个TCP数据包;POST产生两个TCP数据包。
也就是说:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200 ok(返回数据);
对于POST方式的请求,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
这样一说,似乎GET请求比POST效率要高很多哦,其实不然:
在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
所以去年我司花了不少工夫,把系统的get请求都换成post请求了。
最后的两个请求方式之间的区别,主要是读了 文章 了解到的,原作者汽车的比喻很形象易懂,致谢!!!!