其他
新建 FastAPI 异步 API…
从零搭建 FastAPI 异步 REST API 项目时,提供分层目录结构、依赖注入、异步模式与测试脚手架。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 48/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 53/100 ×0.15
适用场景
新建 FastAPI 异步 API 项目通用
解决思路
- 按推荐布局组织项目:app/ 下分 api/(含 v1/endpoints/ 与 router.py)、core/(config.py、security.py、database.py)、models/、schemas/、services/、repositories/,入口为 main.py。
- 在 api/ 下放置 dependencies.py 存放共享依赖。
- 使用 FastAPI 内置的 Depends 依赖注入系统,用于数据库会话管理、认证/授权、共享业务逻辑和配置注入。
- 采用异步模式:异步路由处理函数、异步数据库操作、异步后台任务、异步中间件,正确使用 async/await。
- 当导航摘要不够用时,阅读 references/details.md 获取以 `## Implementation Patterns` 开头的详细实现模式。
- 测试配置:在 tests/conftest.py 中定义 event_loop fixture(session 作用域,创建并关闭事件循环)。
- 测试配置:定义 db_session fixture,用 create_async_engine 连接 `sqlite+aiosqlite:///:memory:`,通过 engine.begin() 与 conn.run_sync(Base.metadata.create_all) 建表,用 sessionmaker(class_=AsyncSession, expire_on_commit=False) 创建会话并 yield。
- 测试配置:定义 client fixture,通过 app.dependency_overrides[get_db] 覆盖数据库依赖,用 AsyncClient(app=app, base_url="http://test") 提供测试客户端。
- 编写测试用例:使用 @pytest.mark.asyncio,通过 client.post 调用接口(如 /api/v1/users/),传入 JSON 数据,断言状态码(如 201)与返回字段(如 email、id)。