Python脚本通过提取Pydantic模型(含Field描述)和路由信息,自动生成含字段说明、校验示例的Markdown文档,并集成CLI与CI实现文档与代码同步更新。

Python脚本自动生成接口文档与字段校验示例,核心在于把代码里的结构信息(如函数签名、类型注解、docstring)和校验逻辑(如 Pydantic 模型、Flask/Sanic 路由)提取出来,转成可读的 Markdown 或 HTML 文档,并附带真实、可运行的字段校验用例。
用 Pydantic 模型统一定义请求/响应结构
Pydantic 不仅能做字段校验,本身自带 schema() 和 json_schema() 方法,还能通过 __doc__ 或 Field(description=...) 注入说明。这是生成文档最扎实的基础。
- 所有请求体、响应体都用
BaseModel定义,字段加Field(description="用户手机号,11位数字") - 嵌套模型自动展开,枚举值、默认值、是否必填等元信息一并导出
- 用
model.json_schema()可直接生成 OpenAPI 兼容的 JSON Schema,后续转 Markdown 更方便
从 FastAPI 或 Flask 路由自动提取接口信息
如果你用的是 FastAPI,它已内置 OpenAPI 文档;但即使不用 FastAPI,也能通过解析路由装饰器或函数对象,拿到路径、方法、参数来源(query/body/path)、模型引用等关键信息。
- 遍历
app.routes(FastAPI)或自定义装饰器(如@api.route("/user", methods=["POST"])) - 用
inspect.signature()获取函数参数名、类型注解、默认值 - 结合 Pydantic 模型的
schema(),拼出每个接口的请求示例、响应结构、错误字段列表
用模板生成带校验示例的 Markdown 文档
别手写文档。用 jinja2 模板,把接口元数据 + 模型 schema + 自动生成的校验用例(成功/失败)注入进去,每次跑脚本就刷新文档。
立即学习“Python免费学习笔记(深入)”;
- 对每个 Pydantic 模型,调用
model.construct(**valid_data).json()生成合法示例 - 故意构造缺失字段、类型错误、超长字符串等 case,捕获
ValidationError并提取errors()输出典型报错片段 - 模板里用三级标题分接口,表格列字段名/类型/是否必填/说明/示例值,下方紧跟 curl 请求 + 校验输出截图式文本
一键运行:封装成 CLI 脚本并集成进 CI
写一个 gen_api_docs.py,支持传参指定模块路径、输出目录、是否覆盖,再加个 --dry-run 预览变更。提交前跑一次,确保文档和代码始终同步。
- 用
argparse解析命令行,加载目标模块(如importlib.import_module("app.api.v1.users")) - 自动识别所有带
@router.post或@app.route的函数,跳过私有或测试函数 - 生成
docs/api/users.md和examples/test_users_validation.py两个产物,后者可直接 pytest 运行验证
基本上就这些。不复杂但容易忽略的是:文档不是“写完就扔”,而是要和校验逻辑绑定、随代码一起演进。只要模型定义清晰、路由有迹可循、生成脚本可复现,接口文档就能真正活起来。










