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 的實際含義與應用場景