mcpField
R
route-to-openapi

route-to-openapi

github.com/zebbern开发4.7k39 次安装1 天前更新
代码仓库

关于 route-to-openapi

route-to-openapi 是一个 Python 脚本,可从源码路由生成 OpenAPI 3.0.3 文档,面向使用受支持框架的 API 开发者。它可自动识别框架并提取路由及模型信息。

主要功能

  1. 01自动检测框架
  2. 02提取路由与 HTTP 方法
  3. 03推断参数和模型
  4. 04从注释与文档字符串提取描述
  5. 05输出 JSON 或 YAML
  6. 06支持所列的六种框架

适用场景

  1. 01从源码路由生成 API 规范
  2. 02为 Swagger UI 或 Redoc 创建 JSON 或 YAML 文档

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/zebbern/claude-code-guide --skill route-to-openapi

安装后在 Claude Code 中输入/route-to-openapi确认已加载。

附带文件LICENSEscripts/generate_api_doc.py

详细介绍

route-to-openapi

自动扫描源代码中的路由/端点定义,生成符合 OpenAPI 3.0.3 规范的 RESTful API 文档。

支持主流 Web 框架,并可自动检测框架。提取 HTTP 方法、路径、参数、请求正文、响应模型和文档注释,然后输出标准 OpenAPI 规范文件,可直接导入 Swagger UI 或 Redoc。

快速开始

# Scan source directory, output OpenAPI spec in JSON format
python scripts/generate_api_doc.py ./src

# Specify output format and file
python scripts/generate_api_doc.py ./src --format yaml --output api-spec.yaml

# Specify framework and API metadata
python scripts/generate_api_doc.py ./app --framework flask --title "My API" --version 2.0.0

# Add server URLs
python scripts/generate_api_doc.py ./routes --server http://localhost:3000 --server https://api.example.com

支持的框架

语言框架解析方式
PythonFlaskAST 解析(装饰器 + 类型注解 + 文档字符串)
PythonFastAPIAST 解析(装饰器 + Pydantic 模型 + 类型注解)
PythonDjango REST FrameworkAST 解析(@api_view 装饰器)
JavaScript/TypeScriptExpress.js正则匹配(app.get() / router.get() + JSDoc)
GoGin正则匹配(r.GET() / group.GET() + 注释)
GoEcho正则匹配(e.GET() + 注释)

提取能力

脚本会自动提取以下信息:

  • HTTP 方法:GET / POST / PUT / DELETE / PATCH 等
  • 路由路径:自动将各框架的路径参数格式转换为 OpenAPI {param} 格式
  • 路径参数:从路由模式中提取(含类型推断)
  • 查询参数:从函数签名中提取(Python 框架)
  • 请求正文:根据类型注解和 Pydantic 模型推断(FastAPI)
  • 响应模型:从 response_model 参数中提取(FastAPI)
  • 端点描述:从文档字符串 / JSDoc / 行内注释中提取
  • 标签分组:按源文件模块名称自动分组

路径参数格式转换

框架源格式转换结果
Flask<int:user_id>{user_id}(类型:整数)
FastAPI{user_id}{user_id}(不变)
Express:user_id{user_id}
Gin/Echo:user_id{user_id}

参数

参数描述默认值
source_dir要扫描的源目录(必填)-
-f, --format输出格式:json 或 yamljson
-o, --output输出文件路径标准输出
--framework指定框架(跳过自动检测)自动检测
--titleAPI 文档标题API Documentation
--versionAPI 版本号1.0.0
--descriptionAPI 描述文本空
--server服务 URL(可多次指定)无

输出示例

{
  "openapi": "3.0.3",
  "info": {
    "title": "My API",
    "version": "1.0.0"
  },
  "paths": {
    "/users": {
      "get": {
        "summary": "List all users",
        "operationId": "list_users",
        "tags": ["users"],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": { "type": "integer" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    },
    "/users/{user_id}": {
      "get": {
        "summary": "Get user by ID",
        "operationId": "get_user",
        "tags": ["users"],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": { "type": "integer" }
          }
        ],
        "responses": {
          "200": { "description": "Successful response" }
        }
      }
    }
  }
}

前置条件

  • Python 3.8+
  • 无需额外依赖 — 仅使用 Python 标准库
  • 扫描的项目必须使用上述支持的 Web 框架之一

评论

支持 Markdown