接口测试基础-HTTP协议
一句话开场:一切脱离业务的测试都是吹牛,一切脱离协议的接口测试都是抓瞎。。。。。。。
做接口测试离不开网络,说起网络,我们回归本源,从万维网开始。
万维网www(World Wide Web)并不是某种特殊的计算机网络。万维网是一个大规模的,联机式的信息储存所。万维网用链接的方法能非常方便的从因特网上的一个站点访问另一个站点。客户程序向服务器发出请求,服务器向客户返回客户需要的万维网资料。
万维网使用统一资源定位符URL(Uniform Resource Locator)来标记万维网上的各种文档,并使每一个文档在整个因特网的范围内具有唯一的标识符URL。HTTP(超文本传送协议)是一个应用层协议,它使用TCP连接进行可靠的传送。HTML(超文本标记语言),使得万维网页面的设计者可以很方便的用链接从本页面的某处链接到因特网上的任何一个万维网页面,并能够在自己的主机屏幕上将这些页面显示出来。
URL的格式一般由以下四部分组成:<协议>://<主机>:<端口>/<路径>, 比如我们访问****网站的一个URL:http://edu.****.net/courses/o399_s403,这里省略了默认端口
HTTP协议本身是无连接的,虽然HTTP使用了TCP连接,但通信双方在交换HTTP报文前不需要先建立HTTP连接。
用户在点击鼠标连接万维网时,HTTP协议首先要和服务器建立TCP连接。TCP的三次握手,在三次握手的前两部分完成后,万维网就把HTTP请求报文作为三次握手的第三个豹纹的数据发给万维网服务器。服务器收到HTTP请求报文后,就把所请求的文档作为响应报文返回给用户。
HTTP有两类报文:
请求报文:从客户向服务器发送请求报文
响应报文:从服务器到客户的回答
由于HTTP是面向文本的,因此在报文中的每一个字段都是一些ASCII码率,因此各个字段的长度都是不确定的
HTTP请求报文和响应报文都是由三个部分构成,可以看出,这两种报文的区别就是开始行不同。
1. 开始行,用于区分是请求报文还是响应报文,在请求报文中的开始行叫做请求行,而在响应报文中的开始行叫做状态行。在开始行的三个字段之后都以空格分隔开。
2. 头部行, 用来说明浏览器,服务器或报文主体的一些信息。头部可以有好几行,也能不使用。
3. Body, 在请求报文或者响应报文中可能不使用这部分
- 开始行
请求报文的第一行“请求行”有三部分内容,方法,请求资源的URL,以及HTTP的版本
方法其实就是一些命令,对所请求的对象进行的操作。
以下是一些经常使用的几种方法:
LINK和UNLINK 已经被HTTP 1.1废弃,不再支持。
当客户端向服务器发送请求时,返回的请求,会给出客户本次请求处理的结果,描述处理结果状态的就是响应报文里的状态码。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。
状态码一般是由3位数字和原因短语组成的,大致有以下分类
下面简单列出各种状态码:
状态码 |
原因短语 |
基本描述 |
200 |
OK |
请求已正常处理 |
204 |
No Content |
请求处理成功!但没有资源可返回 |
206 |
Partial Content |
客户端进行了范围请求,服务器成功执行了这部分GET请求 |
301 |
Moved Permanently |
永久性重定向,请求的资源已被分配了新的URL |
302 |
Found |
临时性重定向,请求的资源已被分配了新的URL,希望用户能使用新的URL访问 |
303 |
See Other |
请求对应的资源存在着另一个URL,应使用GET方法定向获取请求的资源 |
304 |
Not Modified |
资源已找到,但未符合条件请求 |
307 |
Temporary Redirect |
与302有相同的含义 |
400 |
Bad Request |
请求报文中存在语法错误 |
401 |
Unauthorized |
发送的请求未通过HTTP认证的认证信息 |
403 |
Forbidden |
不允许访问资源 |
404 |
NOT Found |
服务器上没有请求的资源 |
500 |
Internal Server Error |
服务器端在执行请求时发生了错误 |
503 |
Service Unavailable |
服务器暂时处于超负载或正在进行停机维护 |
- 头部行