审查 FastAPI 代码的路由模式、依赖注入、验证和异步处理器。适用于审查 FastAPI 应用、检查 APIRouter 配置、依赖注入等。
FastAPI 代码回顾 QQQ快速引用是一项面向实际任务的技能,主要用于APIRouter 设置 , response model, 状态代码 . references/ routes.md.Depends (), 发件解码, 清理, 共享解码;references/ dependenition.md.。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
| 问题类型 | 参考文档 |
|---|---|
| APIRouter 配置、response_model、状态码 | references/routes.md |
| Depends()、yield 依赖、资源清理、共享依赖 | references/dependencies.md |
| Pydantic 模型、HTTPException、422 错误处理 | references/validation.md |
| 异步处理器、阻塞式 I/O、后台任务 | references/async.md |
response_model 以保障类型安全Depends() 注入,而非手动调用HTTPException 并显式指定状态码与 detail 信息async defrequests、time.sleep、open())except 语句以下为 FastAPI 的惯用模式,表面看似有问题,实则正确:
Depends(),而非作为函数参数显式传入response_model,Pydantic 将自动完成序列化转换仅在上下文确实存在问题时才进行标记:
Depends() 注入认证依赖时,才标记“缺少认证”针对每个 FastAPI 相关发现,**仅执行一次**,且须在可锚定该处理器的 **file:line**(参见 review-verification-protocol)之后、发现内容正式提交之前执行。若任一检查步骤未满足通过条件,则**不得**直接按原样断言该发现——应收集证据、撤回、降级严重性,或改述为疑问形式。
| 步骤 | 操作 | 通过条件 |
|---|---|---|
| 1a | 在代码仓库中打开该处理器的路由装饰器(不可凭记忆判断)。 | @router.* 或 @app.*(或注册该处理器的位置)对应的 file:line。 |
| 1b | 记录该装饰器上的 HTTP 方法、response_model= 和 status_code=(若不存在则注明)。 |
该行的代码片段,或明确标注“缺失”并附上同一 file:line。 |
| 步骤 | 操作 | 通过条件 |
|---|---|---|
| 2a | 通读整个处理器函数体。 | 覆盖函数体的 file:line 区间。 |
| 2b | 若主张存在阻塞 I/O:需逐个指出各阻塞调用(例如 requests.、open(、time.sleep、同步 DB/ORM 调用等)。 |
每个调用**必须**提供 file:line;若通读全文后未发现任何阻塞调用,则应撤回该发现。 |
| 步骤 | 操作 | 通过条件 |
|---|---|---|
| 3a | 列出所有参数:含 Depends 或 Annotated[..., Depends]、Pydantic 模型、Body/Query/Path、Request/Response 等。 |
参数名称及其注入机制须关联到签名所在行的 file:line。 |
| 3b | 若主张“缺少认证”:在处理器文件(及其独立的 APIRouter 模块,如有)中搜索 Depends、Security、HTTPBearer 或项目自定义认证依赖。 |
需引用一个已存在的认证钩子,或提供搜索结果:包括所查路径及匹配数量 N(允许为零)。 |
| 3c | 若主张“缺少校验”:确认该参数并非 Pydantic 模型,也非受约束的 Query/Path/Body 参数。 |
须注明其类型/来源并附上 file:line;若已存在校验机制,则应撤回该发现。 |
FastAPI + Pydantic 可自动处理多项关键关注点:
response_model 实现响应序列化在标记某项功能“缺失”前,请先确认 FastAPI 是否已在底层自动处理。