✨ 機能
- 🎯 リクエスト追跡 - HTTPメソッド、パス、レスポンス時間
- 📊 クエリモニタリング - データベースクエリの実行時間
- ⚡ パフォーマンス測定 - リアルタイムの応答速度
- 🎨 Laravel風デザイン - 親しみやすいダークテーマ
🚀 使用方法
画面下部に表示されるデバッグバーをクリックして展開してください。
各エンドポイントにアクセスしてデバッグ情報を確認できます。
""" 完全動作版 FastAPI Debug Toolbar - 修正版 StreamingResponse対応バージョン + Hugging Face リポジトリ取得機能 """ from fastapi import FastAPI, Request from fastapi.responses import HTMLResponse, Response from fastapi.middleware.cors import CORSMiddleware import time import json import asyncio from datetime import datetime from starlette.types import Message # Hugging Face クライアントをインポート try: from huggingface_client import HuggingFaceRepoClient HF_CLIENT_AVAILABLE = True except ImportError: HF_CLIENT_AVAILABLE = False app = FastAPI(title="FastAPI Debug Toolbar", description="Laravel風デバッグバー + Hugging Face連携") # CORS設定 app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # デバッグデータ debug_data = {"requests": [], "queries": []} def generate_debug_bar(request_info): """デバッグバーHTML生成""" return f"""
Laravel風のデバッグツールバーのデモンストレーション
画面下部に表示されるデバッグバーをクリックして展開してください。
各エンドポイントにアクセスしてデバッグ情報を確認できます。
" in body: debug_bar = generate_debug_bar(request_info) body = body.replace("", f"{debug_bar}") # 新しいHTMLResponseを作成 new_response = HTMLResponse(content=body, status_code=response.status_code) # ヘッダーをコピー for key, value in response.headers.items(): new_response.headers[key] = value response = new_response except Exception as e: # エラーが発生してもレスポンスは返す print(f"Debug bar injection failed: {e}") # デバッグヘッダー追加(すべてのレスポンスに) response.headers["X-Debug-Time"] = f"{process_time:.3f}s" response.headers["X-Debug-Queries"] = str(len(debug_data["queries"])) response.headers["X-Debug-Method"] = request.method response.headers["X-Debug-Path"] = request.url.path return response def mock_query(sql, delay=0.05): """データベースクエリシミュレート""" time.sleep(delay) debug_data["queries"].append({ "query": sql, "time": f"{delay:.3f}s", "timestamp": datetime.now().isoformat() }) @app.get("/", response_class=HTMLResponse) async def home(): # ホームページのクエリをシミュレート mock_query("SELECT COUNT(*) FROM users", 0.05) return f"""