Coverage for utils/docs/export_openapi.py: 0.00%
30 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-13 18:58 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-13 18:58 +0000
1#!/usr/bin/env python3
2"""
3OpenAPI规范导出脚本
5用途:从FastAPI应用导出OpenAPI规范到JSON文件
6"""
7import argparse
8import json
9import sys
10from pathlib import Path
12# 添加backend目录到Python路径
13backend_dir = Path(__file__).parent.parent / "backend"
14sys.path.insert(0, str(backend_dir))
16from main import app
19def export_openapi(output_path: str):
20 """
21 导出OpenAPI规范
23 Args:
24 output_path: 输出文件路径
25 """
26 # 获取OpenAPI规范
27 openapi_schema = app.openapi()
29 # 确保输出目录存在
30 output_file = Path(output_path)
31 output_file.parent.mkdir(parents=True, exist_ok=True)
33 # 写入文件
34 with open(output_file, "w", encoding="utf-8") as f:
35 json.dump(openapi_schema, f, indent=2, ensure_ascii=False)
37 print(f"✅ OpenAPI规范已导出到: {output_path}")
39 # 打印统计信息
40 endpoints = len(
41 [
42 path
43 for path in openapi_schema.get("paths", {}).values()
44 for method in path.keys()
45 ]
46 )
47 schemas = len(openapi_schema.get("components", {}).get("schemas", {}))
49 print(f"📊 统计信息:")
50 print(f" - API端点数量: {endpoints}")
51 print(f" - 数据模型数量: {schemas}")
54def main():
55 parser = argparse.ArgumentParser(description="导出FastAPI应用的OpenAPI规范")
56 parser.add_argument(
57 "--output",
58 "-o",
59 default="docs/api/openapi.json",
60 help="输出文件路径 (默认: docs/api/openapi.json)",
61 )
63 args = parser.parse_args()
65 try:
66 export_openapi(args.output)
67 except Exception as e:
68 print(f"❌ 导出失败: {e}")
69 sys.exit(1)
72if __name__ == "__main__":
73 main()