mcpField
R
route-to-openapi

route-to-openapi

github.com/zebbern開発4.7k39 回インストール1 日前に更新
リポジトリ

route-to-openapi について

route-to-openapi は、ソースコード内のルートから OpenAPI 3.0.3 ドキュメントを生成する Python スクリプトです。対応する Python、JavaScript/TypeScript、Go フレームワークを使う API 開発者向けで、フレームワーク検出とルート情報の抽出に対応します。

主な機能

  1. 01フレームワークの自動検出
  2. 02ルートと HTTP メソッドの抽出
  3. 03パラメーターとモデルの推定
  4. 04コメントと docstring から説明を抽出
  5. 05JSON と YAML の出力
  6. 06記載された 6 種類のフレームワークに対応

活用シーン

  1. 01ソース内のルートから API 仕様を生成
  2. 02Swagger 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 メソッド、パス、パラメーター、リクエストボディ、レスポンスモデル、ドキュメントコメントを抽出し、Swagger UI や Redoc にインポートできる標準的な OpenAPI 仕様ファイルを出力します。

クイックスタート

# 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 解析(デコレーター+型アノテーション+docstring)
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)
  • エンドポイントの説明:docstring / JSDoc / インラインコメントから抽出します
  • タグによるグループ化:ソースファイルのモジュール名で自動的にグループ化します

パスパラメーター形式の変換

フレームワークソース形式変換後
Flask<int:user_id>{user_id}(型:integer)
FastAPI{user_id}{user_id}(変更なし)
Express:user_id{user_id}
Gin/Echo:user_id{user_id}

パラメーター

パラメーター説明デフォルト
source_dirスキャンするソースディレクトリ(必須)-
-f, --format出力形式:json または yamljson
-o, --output出力ファイルのパスstdout
--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 フレームワークのいずれかを使用している必要があります

コメント