crab

crab

The 'crabs in a barrel' mentality only exists if we view ourselves as a crab. The truth is on the map.

极简接口录制工具-选择需要的API保存到数据库

极简接口录制工具#

一天时间完成了一个极简接口录制工具,主要功能包括了:

  1. 录制 API 请求到数据库,可以是 sqlite/postgresql
  2. 手工录制 API 的时候会手工设置浏览器代理,使用命令行或者 UI 的方式一键完成

录制的 API 请求主要作用是为了方便生成 API 测试代码,测试和开发都可以使用。选择需要的 API 保存到数据库,方便后续继续使用.

这个工具的好处就是:成本很低。就一天时间实现最需要的功能.

命令行工具 Commandline Features#

  • 启动 mitmproxy 和自制插件录制 api 请求
poetry run qacli capture start --name="scenario_name"

start

  • 录制什么网站的请求可以在: 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

  • turn on/off proxy for 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

qaui

UI 功能操作:

  • 输入录取的场景名称:任何名字都可以
  • 操作相关页面,API 接口都会被录制
  • 查询数据库,所有这个场景名称的 API 请求都会被记录
select * from api_monitor_record where scenario_name=<your_record_name>
  • 可以对保存的数据进行批量转换成你需要的自动化测试或者数据准备工具

工具很简陋但是足够简单,代码量很少,有记录并且结合其他工具基本能够满足快速构建日常接口访问代码生成和数据准备功能了.

使用到 python 相关#

主要包括了:

  1. typer: 命令行构建工具
  2. gradio: ui 构建工具
  3. 数据库操作:原先自己就有的基于 sqlmodel 的访问工具
  4. poetry: python 项目管理,打包 / 依赖管理
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。