FastAPI Patterns 是一个围绕 FastAPI Web 框架的开发模式技能,定位于现代异步 API 开发,触发关键词包括 fastapi、api endpoint、dependency injection、pydantic model、openapi、swagger、starlette、async api、rest api 等。
【用途】 帮助开发者按 FastAPI 的惯用模式组织异步 API 代码,覆盖从应用初始化、请求响应建模、参数处理、依赖注入到异常处理与路由拆分的常见环节。
【主要能力】
- 基础应用:使用 FastAPI 构造函数并配合 contextlib.asynccontextmanager 定义 lifespan,在启动时创建数据库连接池(app.state.db = await create_db_pool())、在 shutdown 时关闭连接池。示例中设置了 title、version 与 lifespan。
- 请求/响应模型:基于 pydantic 的 BaseModel、Field、EmailStr,定义带校验的请求模型(如 name 的 min_length/max_length、age 的 ge/le)与响应模型,并通过 model_config = {"from_attributes": True} 启用 ORM 模式;可指定 response_model 与 status_code=201。
- 路径与查询参数:使用 Annotated 配合 Path、Query 声明约束,如 Path(..., ge=1, description="User ID")、Query(ge=0)、Query(ge=1, le=100),支持可选 search 参数。
- 依赖注入:使用 Depends 定义数据库会话(get_db 以 yield 提供 AsyncSession)和当前用户(get_current_user,基于 token 认证,失败抛出 HTTPException 401);可用 Annotated 类型别名(DB、CurrentUser)复用。
- 异常处理:内置 HTTPException(如 404 Item not found);自定义异常类配合 @app.exception_handler 返回 JSONResponse。
- 路由组织:使用 APIRouter 定义 prefix 与 tags,再在主应用通过 app.include_router 挂载(可加 prefix="/api/v1")。
- 快速参考表:列出路径参数、查询参数、Body、依赖、Auth、响应模型、状态码的对应写法。
【使用方式】 以技能中的代码示例为模板编写 FastAPI 应用;可参考随附资源:./references/dependency-injection.md(高级 DI 模式、作用域、缓存)、./references/middleware-patterns.md(中间件链、CORS、错误处理)、./references/validation-serialization.md(Pydantic v2 模式、自定义校验器)、./references/background-tasks.md(后台任务、异步 worker、调度);使用 ./scripts/scaffold-api.sh 生成 API 端点样板代码,参考 ./assets/fastapi-template.py 作为生产级应用骨架。
【适用场景】 使用 FastAPI 构建 REST API 或异步 API、需要依赖注入与 Pydantic 校验、需要 OpenAPI/Swagger 文档、需要按路由模块化组织项目的开发工作。
【限制与前置】 前置技能为 python-typing-patterns(Pydantic 模型与类型提示)和 python-async-patterns(异步端点模式);相关技能包括 python-database-patterns(SQLAlchemy 集成)、python-observability-patterns(日志、指标、追踪中间件)、python-pytest-patterns(使用 TestClient 进行 API 测试)。具体安装命令、收费与价格信息暂未提供。