簡約介面錄製工具#
在一天的時間內完成了一個簡約介面錄製工具,主要功能包括:
- 將 API 請求錄製到數據庫中,可以是 sqlite/postgresql。
- 在手動錄製 API 時,可以手動設置瀏覽器代理,使用命令行或 UI 方式一鍵完成。
錄製的 API 請求的主要目的是為了方便生成 API 測試代碼,測試和開發都可以使用。選擇需要的 API 保存到數據庫,方便後續繼續使用。
這個工具的好處就是成本很低,只需要一天的時間實現最需要的功能。
命令行工具 Commandline Features#
- 啟動 mitmproxy 和自製插件錄製 API 請求
poetry run qacli capture start --name="scenario_name"
- 可以在 configs/settings.toml 中配置要錄製的網站請求
mitm = { recorded_url = "https://www.baidu.com,https://www.bing.com" }
上面的例子表示所有 baidu 和 bing 地址的請求都會被抓取保存到數據庫。
- 數據庫表結構:
class ApiMonitorRecord(SQLModel, table=True):
__tablename__ = "api_monitor_record"
id: Optional[int] = Field(default=None, primary_key=True)
app: Optional[str] = None
service: Optional[str] = None
api: Optional[str] = None
path: Optional[str] = None
request_url: Optional[str] = None
method: Optional[str] = None
request_headers: Optional[str] = None
request_body: Optional[str] = None
response_headers: Optional[str] = None
status_code: int
response_body: Optional[str] = None
scenario_name: Optional[str] = None
- 開啟 / 關閉 MAC 代理:不需要再進行瀏覽器操作,一切在命令行中完成
poetry run qacli mac-proxy --help
Usage: qacli mac-proxy [OPTIONS] COMMAND [ARGS]...
╭─ Options ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ off disable api capture proxy │
│ on enable api capture proxy
UI 界面功能 UI Feature#
運行 UI:
poetry run qaui
UI 功能操作:
- 輸入錄取的場景名稱:可以是任何名字
- 操作相關頁面,API 接口都會被錄製
- 查詢數據庫,所有該場景名稱的 API 請求都會被記錄
select * from api_monitor_record where scenario_name=<your_record_name>
- 可以將保存的數據批量轉換為所需的自動化測試或數據準備工具
這個工具非常簡單,代碼量很少,有記錄並結合其他工具基本上能夠滿足快速構建日常接口訪問代碼生成和數據準備功能。
使用到的 Python 相關工具#
主要包括:
- typer:命令行構建工具
- gradio:UI 構建工具
- 數據庫操作:原先自己就有的基於 sqlmodel 的訪問工具
- poetry:Python 項目管理,打包 / 依賴管理