49 lines
1.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()