SuperAPI AI 工具集

web-application

编程与开发

查看项目

更新于 10-26 16:39

技能介绍

用途

这套技能面向 AI 智能体与大语言模型,提供 FastAPI 后端的最佳实践规则,目标是让生成的 Web 应用在安全性、并发正确性和可测试性上符合要求。所有示例共享一个发票(invoice)应用,模型定义在 db-sqlalchemy-2-style,设置定义在 config-typed-settings,应用创建在 app-factory-lifespan,其余规则只展示所讨论的部分。在某个领域编写代码前,应先完整阅读对应规则文件。

技术栈假设

规则假定使用同一套技术栈:FastAPI、SQLAlchemy 2.0(异步)、Alembic、Pydantic v2 与 pydantic-settings、httpx、PyJWT、pwdlib。示例使用异步栈;同样的规则也适用于使用 Session 的同步 def 端点。Django 与 Flask 不在范围内。当某条规则与编码标准或测试规则重叠时,在网络应用代码中以本技能为准。

主要能力(按分类)

安全(CRITICAL)

  • sec-password-hashing:使用 Argon2 哈希密码。
  • sec-secure-tokens:用 secrets 生成令牌,并以常量时间比较。
  • sec-jwt-validation:以固定算法和必需声明校验 JWT。
  • sec-object-authorization:不仅授权端点,还要授权对每个对象的访问。
  • sec-cors-origins:显式列出允许的 CORS 来源。

数据库(CRITICAL)

  • db-parameterized-queries:绝不用字符串格式化构建 SQL。
  • db-session-per-request:引擎只创建一次,每个请求创建一个会话。
  • db-transaction-boundary:每个用例提交一次,不在辅助函数或依赖清理中提交。
  • db-eager-loading:显式加载关系,并让懒加载抛出异常。
  • db-migrations-alembic:用 Alembic 迁移修改 schema。
  • db-sqlalchemy-2-style:使用 SQLAlchemy 2.0 类型化模型与 select()。

异步 I/O(CRITICAL)

  • async-no-blocking-calls:在 async def 端点中绝不阻塞事件循环。
  • async-shared-http-client:共享一个带显式超时的 httpx.AsyncClient。

API 设计(HIGH)

  • api-separate-schemas:请求与响应模型同 ORM 模型分离。
  • api-error-responses:在异常处理器中把领域错误映射为 HTTP 响应。
  • api-bounded-lists:每个列表端点都要有边界并分页。

配置(HIGH)

  • config-typed-settings:启动时将配置加载到类型化设置对象,配置错误应在启动时暴露而非首个请求时。

应用结构(HIGH)

  • app-factory-lifespan:在工厂中构建应用,并在 lifespan 中管理资源。
  • app-thin-routes:保持路由函数精简,用 Annotated 注入依赖。

可观测性(MEDIUM)

  • obs-request-id-logging:用请求 ID 关联日志,使每个请求可追踪。

测试(MEDIUM)

  • test-dependency-overrides:用 dependency_overrides 测试端点,而不是打补丁。
  • test-db-rollback:针对真实数据库在可回滚事务中运行测试。

使用方式

按领域查阅并遵循规则文件。示例展示:用 create_app 工厂配合 lifespan 创建异步引擎与 httpx.AsyncClient,将会话工厂和客户端挂到 app.state;用 get_session 依赖按请求提供会话且不在其中提交;用 select() 查询并按 owner_id 限定范围、用 selectinload 预加载、关系声明 lazy="raise";用 pwdlib 的 Argon2id 哈希密码并在 to_thread 中执行;用 PyJWT 固定算法并校验 aud、iss 及必需声明;用 secrets.token_urlsafe 生成重置令牌且只存其 SHA-256 哈希;用 hmac.compare_digest 做常量时间比较;用 Pydantic Settings 加载配置并显式配置 CORS;测试中用连接级事务加 savepoint 回滚数据库,并用 ASGITransport 与 dependency_overrides 构造测试客户端。

适用场景

适用于使用上述技术栈构建 FastAPI 后端的开发与代码生成,尤其是需要安全认证授权、事务与并发正确性、显式数据加载、类型化配置和可回滚测试的场景。

限制

Django 与 Flask 不在范围内;异步示例之外仅说明同步 def 端点可沿用相同规则。资料未提供价格、平台支持、依赖安装命令及规则的完整逐条正文,相关细节暂未提供。