SuperAPI AI 工具集

python-fastapi-ddd-presentation-skill

编程与开发

查看项目

更新于 10-15 22:17

技能介绍

用途:该技能只聚焦表现层,用于在 Python DDD + 洋葱架构应用中编写 FastAPI 路由、Pydantic schema 与 HTTP 错误映射,前提是已具备 Domain、UseCase 层及仓储装配。

核心约束:表现层是最外层,可依赖 UseCase 与 Domain 类型,但 Domain 不得依赖 FastAPI/Pydantic。业务规则应保留在 Domain/UseCase 内;表现层负责请求解析与校验、原始类型转值对象、调用 usecase.execute(...)、将 Domain 异常映射为 HTTPException、以及实体转响应 schema。

推荐结构:按聚合拆分 presentation/api/{aggregate}/,下设 handlers、schemas、error_messages。

实现清单:通过 Depends(get_*_usecase) 依赖 UseCase 接口;将输入转为 Domain 值对象;把值对象的 ValueError 处理为 400;执行用例;将 Domain 异常(如 NotFound、生命周期错误)映射为 404/400;用 Schema.from_entity 返回响应模型;并通过 responses 在 OpenAPI 中记录错误。

路由模式:建议每个聚合使用小型路由注册类,示例中通过 @app.post("/todos", response_model=TodoSchema, status_code=201) 定义 create_todo,捕获 ValueError 后 raise HTTPException(status_code=400, detail=str(e)),再执行 usecase 并返回 TodoSchema.from_entity(todo)。

Pydantic schema:请求 schema 校验形状与基本约束(如长度、可选字段);响应 schema 提供 from_entity(),把 UUID、datetime 等转为 JSON 友好类型(如时间戳毫秒)。

适用场景:已采用 DDD/洋葱架构的 FastAPI 项目,需规范表现层写法。限制:不涉及 Domain、UseCase 或仓储实现;更详细的模板与说明见 references/PRESENTATION.md。其他收费、平台等信息暂未提供。