HTTP 协议基础知识总结(用于 Web API 接口测试)
接口测试中最常用的通讯协议就是 HTTP(Hypertext Transfer Protocol),本节旨在帮助理解 HTTP 协议的结构、工作流程以及如何用于接口测试。
一、HTTP 协议简介
HTTP 是一种客户端-服务端模型的应用层协议,最初用于浏览器与网站服务器之间的数据传输。由于其结构简单、使用灵活,现在已经成为服务端与服务端、移动 App 与服务端等通信的主流协议。
常见版本
版本 | 特点 |
0.9 | 最初版本,仅支持 GET 方法 |
1.0 | 增加了请求头,使用 TCP 短连接 |
1.1 | 默认开启 keep-alive,复用连接(最常用) |
2 | 支持多路复用、头部压缩等优化 |
3 | 基于 UDP 的 QUIC 协议实现 |
二、HTTP 通信流程
基本模型:客户端发起请求,服务端返回响应。
- 客户端必须先发送 HTTP 请求(Request)
- 服务端响应 HTTP 响应(Response)
- HTTP/1.1 之前:每个请求都建立并断开连接
- HTTP/1.1:支持连接复用(keep-alive)
注意:服务端不能主动向客户端推送消息(除非使用 WebSocket)。
三、HTTP 请求结构(Request)
HTTP 请求由 3 个部分组成:
1. 请求行(Request Line)
格式如下:
<请求方法> <请求路径> <HTTP版本>
示例:
GET /mgr/login.html HTTP/1.1
POST /api/medicine HTTP/1.1
常见请求方法
方法 | 含义 |
GET | 获取资源(常用于读取数据) |
POST | 提交资源(常用于新增数据) |
PUT | 更新资源 |
DELETE | 删除资源 |
PATCH | 局部更新(非主流) |
重点掌握 GET / POST / PUT / DELETE,用于模拟前端对后端的 CRUD 行为。
2. 请求头(Request Headers)
请求头以 键: 值
的形式呈现,描述请求的元信息。例如:
Host: www.example.com
User-Agent: Mozilla/5.0
Content-Type: application/json
Content-Length: 51
Host
:目标服务器地址User-Agent
:客户端信息(如浏览器、工具类型)Content-Type
:请求体的数据格式(例如 JSON)Content-Length
:请求体字节长度
3. 请求体(Request Body)
请求体用于提交数据(常用于 POST、PUT),常见格式:
类型 | 描述 |
| JSON 格式数据 |
| XML 格式数据 |
| 表单数据(key=value&key2=value2) |
| 上传文件或表单 |
例如:
name=qingmeisu&sn=099877883837&desc=清霉素药品
请求头和请求体之间必须用一个 空行 分隔。
4. URL 参数(Query String)
URL 中 ?
后面的部分叫做查询字符串,用于传递参数。例如:
https://www.baidu.com/s?wd=iphone&rsv_spt=1
解析为:
参数名 | 参数值 |
wd | iphone |
rsv_spt | 1 |
格式为 key=value
,多个参数用 &
连接。
四、HTTP 响应结构(Response)
HTTP 响应也由三部分组成:
1. 响应状态行(Status Line)
格式:
<协议版本> <状态码> <状态描述>
示例:
HTTP/1.1 200 OK
常见状态码分类:
状态码段 | 含义 | 示例 |
2xx | 成功处理请求 | 200 OK、201 Created |
3xx | 重定向 | 301 Moved Permanently、302 Found |
4xx | 客户端错误 | 400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found |
5xx | 服务端错误 | 500 Internal Server Error、503 Service Unavailable |
2. 响应头(Response Headers)
和请求头类似,用于描述返回信息的元数据。例如:
Content-Type: application/json
Content-Length: 37
Server: WSGIServer/0.2 CPython/3.7.3
3. 响应体(Response Body)
响应体通常用于返回请求的数据内容,例如:
{"ret": 0,"retlist": [],"total": 0
}
和请求体一样,常见格式有:
格式类型 | 说明 |
JSON | 常见于现代 Web API |
XML | 用于老旧系统或兼容需求 |
HTML | 浏览器访问页面时 |
文本 / 表单数据 | 少见 |
五、接口测试中重点关注的 HTTP 要素
要素 | 说明 |
方法 | 使用 GET/POST/PUT/DELETE 发起不同请求 |
URL | 接口地址,包括路径与参数 |
请求头 | 设置 |
请求体 | 提交 JSON 或表单数据等 |
响应状态码 | 判断接口是否正常返回 |
响应体内容 | 验证数据是否符合预期 |
六、开发者工具查看 HTTP 消息
在浏览器(如 Chrome)中,按 F12
打开开发者工具,切换至 Network
标签页,刷新页面后可以查看每个请求的详细信息,包括:
- 请求方法 / URL / 状态码
- 请求与响应头
- 请求与响应体(Headers / Payload / Preview)
七、总结
理解 HTTP 协议是掌握接口测试的前提,尤其要掌握:
- HTTP 的通信模型(请求 → 响应)
- 请求结构(方法、头部、体)
- 响应结构(状态码、数据格式)
- GET / POST / PUT / DELETE 的实际含义与应用场景