from fastapi import FastAPI, responses from fastapi.middleware.cors import CORSMiddleware from starlette.middleware import Middleware # 新增导入 from src.backend.app.api.endpoints import router from src.backend.app.utils.logger import setup_logging from src.backend.config import settings from .services.switch_traffic_monitor import get_switch_monitor from .services.traffic_monitor import traffic_monitor from src.backend.app.api.database import init_db def create_app() -> FastAPI: # 初始化数据库 init_db() # 启动流量监控 traffic_monitor.start_monitoring() # 设置日志 setup_logging() # 创建FastAPI应用(使用新的中间件配置方式) app = FastAPI( title=settings.APP_NAME, debug=settings.DEBUG, docs_url=f"{settings.API_PREFIX}/docs", redoc_url=f"{settings.API_PREFIX}/redoc", openapi_url=f"{settings.API_PREFIX}/openapi.json", middleware=[ # 这里直接配置中间件 Middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) ] ) # 添加根路径重定向 @app.get("/", include_in_schema=False) async def root(): return responses.RedirectResponse(url=f"{settings.API_PREFIX}/docs") # 添加API路由 app.include_router(router, prefix=settings.API_PREFIX) return app app = create_app()