软件测试/测试开发 | 接口测试之HTTP 协议讲解

公众号搜索:TestingStudio 霍格沃兹的干货都很硬核

HTTP 协议是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 是万维网的数据通信的基础。客户端向服务端发送 HTTP 请求,服务端则会在响应中返回所请求的数据。了解了 HTTP 协议,才能对接口测试进行更深入的学习。

环境安装准备

HTTP 请求报文和响应报文都是由三个部分组成的:

  • 开始行:请求报文中叫请求行,响应报文中叫状态行
  • 首部行:用来说明浏览器服务器或报文主体的一些信息
  • 实体主体:请求报文中一般不使用,响应报文中可能也没有

请求报文

  • requests 报文结构

软件测试/测试开发 | 接口测试之HTTP 协议讲解_第1张图片

  • 请求行:请求方法、请求资源的 URL、HTTP 版本信息
  • 首部行:请求行的下一行一般为首部行的开始,包括主机域名、连接信息、用户代理等等信息
  • 实体主体:一般不使用

请求信息的示例

> GET /uploads/user/avatar/31438/8216a3.jpg\u0021md HTTP/1.1
> Host: testerhome.com
> Accept-Encoding: deflate, gzip
> Connection: keep-alive
> Pragma: no-cache
> Cache-Control: no-cache
> User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0)\
 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36
> Sec-Fetch-Dest: image
> Accept: image/webp,image/apng,image/*,*/*;q=0.8
> Sec-Fetch-Site: same-origin
> Sec-Fetch-Mode: no-cors
> Referer: https://testerhome.com/
> Accept-Language: en,zh-CN;q=0.9,zh;q=0.8
> Cookie: user_id=bnVsbA%3D%3D--69ec4bae7d601a6036395dbe51d1d2ffcd6fa592; \
_homeland_session=7Sukl%2FrozWDlCgKard4LDAggLFboqpOh2O2tuEDrKAJQsGcBr%2BEo\
5YfUSQ%2BzCnQjz2YqVdLJZynbXI7rd96gawXmb%2FckmcX0VRzKeJUzg%2FddCkdLxHrPxOwD\
BugHvSRINOfLKfJSrX%2F7u%2BJqx8ZJ%2FUzMrdBw9PqmLTgKp9qG2hVRMmFvRdLoAg3Hj0WQ\
XoYmEkMwlfG%2BJTFpE2D8IdyN49iAkEcCu8mY%2FwYUXg%2FNdYyLZ29AEkdLU%2BFhU1GIXZ\
yYnBIfB4B34Z%2BuwST1%2F2wZ0Lr0YYaVC7MmYg%3D%3D--5Lp2FdyHJUsrhoaz--iUv%2Bp1\
4%2Bz76Qteb%2FsjsKHQ%3D%3D; _ga=GA1.2.877690763.1584004389; _gid=GA1.2.135\
846535.1584004389; _gat=1
>

请求报文的方法

方法 意义
OPTION 请求一些选项信息
GET 请求读取由 URL 所标志的信息
HEAD 请求读取由 URL 所标志的信息的首部
POST 给服务器添加信息
PUT 在指明的 URL 下存储一个文档
DELETE 删除指明的 URL 所标志的资源
TRACE 用来进行环回测试的请求报文
CONNECT 用于代理服务器

常用的请求报文的方法为 GET、POST。会在后面的章节中进行详述。

响应报文

软件测试/测试开发 | 接口测试之HTTP 协议讲解_第2张图片

  1. 状态行:HTTP 版本、状态码、解释状态码短语
  2. 首部行:服务器信息、时间、内容类型、内容长度等等
  3. 实体主体

响应信息的示例

< HTTP/1.1 200 OK
< Server: nginx/1.10.2
< Date: Thu, 12 Mar 2020 09:13:44 GMT
< Content-Type: image/png
< Content-Length: 11390
< Last-Modified: Sat, 27 Jan 2018 13:51:30 GMT
< Connection: keep-alive
< ETag: "5a6c83e2-2c7e"
< Accept-Ranges: bytes
<

状态码

状态码有 5 个大类,由第一位数字进行区分,每个大类下面还有不同的子类,每种子类的长度都是 3 位,都代表一个状态码,即一种类型的返回的信息。

  • 1xx 表示通知信息,如请求收到了或正在进行处理
  • 2xx 表示成功,如接受或知道了
  • 3xx 表示重定向,如果要完成请求还必须才去进一步的行动
  • 4xx 表示客户端的差错
  • 5xx 表示服务器的差错

你可能感兴趣的:(http,测试开发,软件测试,自动化测试,接口测试)