dingdanquanliucheng/backend/app/main.py
taiyi 34e9be8912 为 core 层和 models 层添加中文注释
- core: config、security、exceptions、responses、error_codes、db、main
- models: base、business(17个模型类)、system(6个模型类)、__init__
- 每个函数和类均标注作用、返回值、被调用方

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 06:57:21 +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.router 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)