FastAPI Patterns 是一套面向生产环境的 FastAPI 开发模式参考,核心目标是帮助开发者用 FastAPI 的依赖注入与类型系统构建异步 API。资料以代码示例形式呈现,覆盖项目结构、应用工厂、依赖注入、Pydantic 模型、路由、后台任务、错误处理、测试以及反模式等部分。
用途方面,该模式集用于指导 FastAPI 应用的工程化组织,强调异步、可测试、可维护的结构。它不提供独立安装包或命令行工具,而是以代码片段和目录布局作为参考。
主要能力包括:
- 项目布局:给出 src/app 下的 main.py、config.py、dependencies.py、middleware.py、routers、models、services、db 以及 tests 目录结构,区分路由、模型、服务与数据库会话。
- 应用工厂:使用 create_app() 创建 FastAPI 实例,并通过 lifespan 异步上下文管理器处理启动时的 init_db、init_cache 与关闭时的 close_db、close_cache。
- 依赖注入:定义 get_db 异步生成器与 get_current_user 鉴权依赖,并使用 Annotated 类型别名(DB、CurrentUser)简化路由签名。
- Pydantic 模型:展示 SkillBase、SkillCreate、SkillResponse、SkillList 等模型,包含字段校验(pattern、min_length、max_length)、from_attributes 配置以及分页列表结构。
- 路由模式:展示列表查询(支持 category、tag 过滤与 page、per_page 分页)、创建资源(201 状态码)等路由写法,并使用 response_model 声明响应结构。
- 后台任务:通过 BackgroundTasks 将校验逻辑放入后台执行,返回 queued 状态,并在后台任务中更新数据库。
- 错误处理:定义 AppError 异常与全局异常处理器,返回统一 JSON 错误结构(code、message)。
- 测试:使用 pytest、httpx.AsyncClient 与 ASGITransport 编写异步测试,覆盖列表与创建接口。
- 反模式:列出同步数据库调用、路由内业务逻辑、缺少响应模型、全局状态、缺少校验、缺少生命周期管理等应避免的做法。
使用方式上,资料以代码示例为主,开发者可参照这些片段组织自己的 FastAPI 项目。示例中涉及 asyncpg、aiosqlite 等异步驱动,以及 pytest、httpx 等测试依赖,但资料未提供具体安装命令或版本要求。
适用场景包括:需要构建异步 REST API 的后端项目、希望采用依赖注入与分层结构的 FastAPI 应用、需要统一错误响应与后台任务处理的 API 服务,以及需要为 FastAPI 接口编写异步测试的团队。
限制方面,资料未说明该模式集的授权方式、维护状态、版本兼容范围或是否提供额外工具;也未提供收费、价格或平台支持信息。示例中的 ORGANVM Skills API 仅为演示命名,不代表实际产品。