dingdanquanliucheng/backend/app/main.py
taiyi 84448943cc fix: 修复启动导入错误 router → routes
main.py 错误地从 backend.app.api.router 导入 api_router,
实际定义在 backend.app.api.routes 中。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-30 22:03:41 +08:00

49 lines
1.4 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.

"""FastAPI 应用入口。
创建应用实例、配置 CORS 中间件、注册全局异常处理器、挂载 API 路由。
启动命令: uvicorn backend.app.main:app --reload
"""
from fastapi import FastAPI
from fastapi import Request
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import JSONResponse
from backend.app.api.routes import api_router
from backend.app.core.config import get_settings
from backend.app.core.exceptions import AppException
settings = get_settings()
app = FastAPI(title=settings.app_name)
# 配置 CORS 跨域,允许前端开发服务器访问
app.add_middleware(
CORSMiddleware,
allow_origins=settings.cors_origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.exception_handler(AppException)
async def app_exception_handler(_: Request, exc: AppException) -> JSONResponse:
"""全局捕获 AppException返回统一的错误 JSON 格式。
避免每个路由重复构造错误响应,所有业务异常由此处理器统一格式化。
"""
# 统一业务异常返回格式,避免每个接口重复构造错误响应。
return JSONResponse(
status_code=exc.status_code,
content={
"code": exc.code,
"message": exc.message,
"data": {},
},
)
# 挂载所有 API 路由,路由前缀在 router.py 中统一定义
app.include_router(api_router)