from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.core.config import settings from app.api.v1.api import api_router from app.core.middleware import add_response_middleware from app.core.exceptions import add_exception_handlers from contextlib import asynccontextmanager @asynccontextmanager async def lifespan(app: FastAPI): # 在应用启动时执行 from app.db.init_db import init_db await init_db() yield # 在应用关闭时执行 # 清理代码可以放在这里 app = FastAPI( title=settings.PROJECT_NAME, description=settings.PROJECT_DESCRIPTION, version=settings.PROJECT_VERSION, lifespan=lifespan ) # 配置CORS app.add_middleware( CORSMiddleware, allow_origins=settings.BACKEND_CORS_ORIGINS, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # 添加响应中间件 add_response_middleware(app) # 添加异常处理器 add_exception_handlers(app) # 包含API路由 app.include_router(api_router, prefix=settings.API_V1_STR) @app.get("/") async def root(): return {"message": "欢迎使用美搭Meida API服务"} @app.get("/health") async def health_check(): return {"status": "healthy"} if __name__ == "__main__": import uvicorn uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)