软件测试之接口自动化测试(二):关于HTTP

前言

关于HTTP这个主题,可能大家马上就会想到HTTP协议,确实今天要讲的也就是HTTP协议,因为我们面对的接口测试,大部分其实是基于HTTP协议的Web接口,所以今天就想将HTTP协议相关知识来梳理一下。

HTTP概念理解

1、什么是HTTP?
HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。

2、在TCP/IP协议栈中的位置
HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图所示:


默认HTTP的端口号为80,HTTPS的端口号为443。(划重点,这个很重要得记住)

工作流程

在说工作流程之前,我们得先了解HTTP协议的是如何在浏览器和Web服务器之前交互的。
1、HTTP的请求响应模型
HTTP协议永远都是客户端发起请求,服务器返回响应结果的,看图更好理解,见下图:


这样模型就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端(这里暂时只考虑短连接,鉴于篇幅关系不扩展长连接了,有兴趣的童鞋可以自己搜索了解HTTP长连接相关知识)。另外,HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系的。
2、工作过程
一次HTTP操作称为一个事务,其工作过程可分为下面几步:
(1)客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。
(2)发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
(3)服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
(4)释放连接TCP连接
Web服务器主动关闭TCP套接字,释放TCP连接;客户端被动关闭TCP套接字,释放TCP连接。
(5)客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

例如,下图就是在浏览器地址栏输入google搜索的地址后按下回车的过程:

HTTP状态码

请求成功后,不管结果如何浏览器都会收到一个返回的HTTP状态码,我们可以根据这个状态码来判断本次请求成功与否,下面是常见的HTTP状态码:
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误

HTTP状态码分类:
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用,HTTP状态码共分为5种类型(划重点,这个也很重要得知道):


注:鉴于篇幅关系,全部的状态码列表就不贴了,百度搜一下就出来了。给个链接参考:http://tool.oschina.net/commons?type=5

猜你喜欢

转载自blog.csdn.net/PythonCS001/article/details/107408679