Python脚本通过提取Pydantic模型(含Field描述)和路由信息,自动生成含字段说明、校验示例的Markdown文档,并集成CLI与CI实现文档与代码同步更新。
Python脚本自动生成接口文档与字段校验示例,核心在于把代码里的结构信息(如函数签名、类型注解、docstring)和校验逻辑(如 Pydantic 模型、Flask/Sanic 路由)提取出来,转成可读的 Markdown 或 HTML 文档,并附带真实、可运行的字段校验用例。
Pydantic 不仅能做字段校验,本身自带 schema() 和 json_schema() 方法,还能通过 __doc__ 或 Field(description=...) 注入说明。这是生成文档最扎实的基础。
BaseModel 定义,字段加 Field(description="用户手机号,11位数字")
model.json_schema() 可直接生成 OpenAPI 兼容的 JSON Schema,后续转 Markdown 更方便
tAPI 或 Flask 路由自动提取接口信息如果你用的是 FastAPI,它已内置 OpenAPI 文档;但即使不用 FastAPI,也能通过解析路由装饰器或函数对象,拿到路径、方法、参数来源(query/body/path)、模型引用等关键信息。
app.routes(FastAPI)或自定义装饰器(如 @api.route("/user", methods=["POST"]))inspect.signature() 获取函数参数名、类型注解、默认值schema(),拼出每个接口的请求示例、响应结构、错误字段列表别手写文档。用 jinja2 模板,把接口元数据 + 模型 schema + 自动生成的校验用例(成功/失败)注入进去,每次跑脚本就刷新文档。
model.construct(**valid_data).json() 生成合法示例ValidationError 并提取 errors() 输出典型报错片段写一个 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 运行验证基本上就这些。不复杂但容易忽略的是:文档不是“写完就扔”,而是要和校验逻辑绑定、随代码一起演进。只要模型定义清晰、路由有迹可循、生成脚本可复现,接口文档就能真正活起来。