SuperAPI AI 工具集

fastapi-templates

编程与开发

查看项目

更新于 10-16 07:45

技能介绍

用途

FastAPI 项目模板(fastapi-templates)用于从零开始创建生产级 FastAPI 项目,提供异步模式、依赖注入、中间件与完整错误处理的工程结构与最佳实践,帮助构建高性能 API。

适用时机包括:从零启动新的 FastAPI 项目;用 Python 实现异步 REST API;构建高性能 Web 服务与微服务;创建搭配 PostgreSQL、MongoDB 的异步应用;搭建具备规范结构与测试的 API 项目。

主要能力

项目结构

推荐布局按职责分层:

  • app/api/:API 路由,含 v1/endpoints(users.py、auth.py、items.py)与 router.py;dependencies.py 存放共享依赖
  • app/core/:核心配置,含 config.py、security.py、database.py
  • app/models/:数据库模型(user.py、item.py)
  • app/schemas/:Pydantic 模式(user.py、item.py)
  • app/services/:业务逻辑(user_service.py、auth_service.py)
  • app/repositories/:数据访问(user_repository.py、item_repository.py)
  • app/main.py:应用入口

依赖注入

使用 FastAPI 内置的 Depends 依赖注入系统,覆盖数据库会话管理、认证/授权、共享业务逻辑与配置注入。

异步模式

正确使用 async/await,包括异步路由处理器、异步数据库操作、异步后台任务与异步中间件。

实现范式

资料给出五类实现模式:

  1. 完整 FastAPI 应用:使用 lifespan 管理启动/关闭事件,配置 CORS 中间件,挂载路由前缀 /api/v1;通过 pydantic_settings 的 BaseSettings 与 lru_cache 管理配置;用 SQLAlchemy 异步引擎与 AsyncSession 提供 get_db 依赖。
  2. CRUD 仓储模式:BaseRepository 泛型基类提供 get、get_multi、create、update、delete 异步方法;UserRepository 扩展 get_by_email、is_active 等专用方法。
  3. 服务层:UserService 封装业务逻辑,如创建用户时校验邮箱是否已注册、对密码做哈希、认证时校验密码、更新用户时按需重新哈希密码。
  4. 带依赖的 API 端点:使用 APIRouter 定义创建、读取当前用户、按 ID 读取、更新、删除等端点,结合 get_db 与 get_current_user 依赖,并返回一致的 HTTP 状态码与错误信息。
  5. 认证与授权:core/security.py 使用 passlib 的 CryptContext(bcrypt)做密码哈希与校验,使用 jose 生成与解析 JWT(HS256);api/dependencies.py 通过 OAuth2PasswordBearer 与 get_current_user 完成令牌校验与用户加载。

测试

提供异步测试配置:conftest.py 中使用 pytest、httpx 的 AsyncClient、内存 SQLite(sqlite+aiosqlite:///:memory:)与依赖覆盖(app.dependency_overrides)搭建测试夹具;test_users.py 演示创建用户的异步测试用例。

资源

  • references/fastapi-architecture.md:详细架构指南
  • references/async-best-practices.md:异步/await 模式
  • references/testing-strategies.md:综合测试指南
  • assets/project-template/:完整 FastAPI 项目
  • assets/docker-compose.yml:开发环境配置

使用方式

资料未提供具体的安装命令或调用命令,仅说明该技能在启动新 FastAPI 项目、实现异步 REST API、构建高性能服务与微服务、创建异步应用、搭建规范 API 项目等场景下使用。具体安装与调用步骤暂未提供。

适用场景

  • 从零创建 FastAPI 项目
  • 用 Python 实现异步 REST API
  • 构建高性能 Web 服务与微服务
  • 创建搭配 PostgreSQL、MongoDB 的异步应用
  • 搭建具备规范结构与测试的 API 项目

最佳实践

  • 全程异步:数据库与外部 API 均使用 async
  • 依赖注入:充分利用 FastAPI 的 DI 系统
  • 仓储模式:将数据访问与业务逻辑分离
  • 服务层:业务逻辑不写在路由中
  • Pydantic 模式:为请求/响应提供强类型
  • 错误处理:保持一致的错误响应
  • 测试:独立测试各层

常见陷阱

  • 异步中混入阻塞代码:使用同步数据库驱动
  • 缺少服务层:业务逻辑写在路由处理器中
  • 缺少类型提示:丧失 FastAPI 的优势
  • 忽略会话:未正确管理数据库会话
  • 缺少测试:跳过集成测试
  • 紧耦合:在路由中直接访问数据库

限制

资料未说明该技能的收费、价格、平台支持范围或效果保证,这些信息暂未提供。