1. FastAPI与SqlAlchemy实现主从表数据接口设计
在Python后端开发中,FastAPI和SqlAlchemy的组合已经成为构建RESTful API的热门选择。这种组合特别适合处理主从表关系的数据操作,能够提供高效、类型安全的接口开发体验。
1.1 基础架构设计
我们的后端架构采用三层设计模式:
- 路由层(Router):处理HTTP请求和响应
- 控制器层(Controller):业务逻辑处理
- 数据访问层(CRUD):数据库操作
这种分层架构的最大优势在于职责分离,每层只需关注自己的核心功能。路由层负责协议转换,控制器处理业务规则,CRUD层专注数据持久化。
提示:在实际项目中,建议将这三层分别放在不同的Python模块中,便于后期维护和团队协作。
1.2 标准化响应协议
我们定义了统一的API响应格式:
json复制{
"success": false,
"result": T,
"targetUrl": "string",
"UnAuthorizedRequest": false,
"errorInfo": {
"code": 0,
"message": "string",
"details": "string"
}
}
这种标准化响应有几个关键优势:
- 前端可以统一处理成功和错误情况
- 便于日志记录和问题排查
- 支持重定向等高级功能
- 类型安全,便于TypeScript等静态类型语言使用
1.3 基类控制器实现
基类控制器是整个架构的核心,它封装了常见的CRUD操作:
python复制class BaseController[ModelT, IDT, PageDtoT, DtoT]:
def __init__(self, crud, pagedto_class, dto_class, router):
self.crud = crud
self.pagedto_class = pagedto_class
self.dto_class = dto_class
self.router = router
def init_router(self):
# 初始化标准CRUD路由
self.router.add_api_route("/", self.create, methods=["POST"])
self.router.add_api_route("/{id}", self.get, methods=["GET"])
# 其他标准路由...
基类控制器的设计要点:
- 使用Python泛型(TypeVar)支持多种模型类型
- 自动注册标准路由
- 依赖注入数据库会话
- JWT认证集成
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 主从表业务实现细节
2.1 报价单主表实现
报价单主表控制器继承基类控制器并添加自定义逻辑:
python复制@router.delete(
"quotation-related/{id}",
response_model=AjaxResponse[bool | None],
summary="删除报价单及明细信息",
depende
