FastAPI 规则¶
在 FastAPI 项目中,请将这些规则与通用 Python 规则一起使用。
结构¶
- 将应用构建放在
create_app()中。 - 保持路由器轻量;将持久化和业务逻辑移到服务或 CRUD 辅助函数中。
- 分离请求模式、更新模式和响应模式。
- 将数据库会话和认证放在依赖项中。
异步¶
- 对执行 I/O 的端点使用
async def。 - 在异步端点中使用异步数据库客户端和 HTTP 客户端。
- 不要在异步路由中调用
requests、同步 SQLAlchemy 会话或阻塞文件/网络操作。
依赖注入¶
@router.get("/users/{user_id}")
async def get_user(
user_id: str,
db: AsyncSession = Depends(get_db),
current_user: User = Depends(get_current_user),
):
...
不要在路由处理程序中创建 SessionLocal() 或长生命周期客户端。
模式¶
- 不要在响应模型中包含密码、密码哈希、访问 Token、刷新 Token 或内部认证状态。
- 对返回应用程序数据的端点使用
response_model。 - 在可以用 Pydantic 表达规则时,使用字段约束而不是手写验证。
安全¶
- 将 CORS 源设置为环境特定值。
- 不要将通配符源与带凭据的 CORS 组合使用。
- 验证 JWT 的有效期、签发者、受众和算法。
- 对认证端点和高写入负载端点应用速率限制。
- 从日志中移除凭据、Cookie、Authorization 头和 Token。
测试¶
- 覆盖
Depends使用的确切依赖项。 - 测试后清除
app.dependency_overrides。 - 对异步应用优先使用异步测试客户端。
技能:请参阅 fastapi-patterns。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC