跳到内容

fast-api-unused-path-parameter (FAST003)

派生自 FastAPI 代码检查器。

有时提供修复。

作用

识别 FastAPI 路由中声明了路径参数,但函数签名中未包含该路径参数的路由。

为什么这不好?

路径参数用于从 URL 路径中提取值。

如果在路由路径中声明了路径参数,但在函数签名中未声明,则该参数将无法在函数体中访问,这很可能是一个错误。

如果在路由路径中声明了路径参数,但在函数签名中声明为仅位置参数,则该参数也无法在函数体中访问,因为 FastAPI 不会注入该参数。

已知问题

如果路径参数不是有效的 Python 标识符(例如,user-id,而不是 user_id),FastAPI 将对其进行规范化。但是,此规则只是忽略此类路径参数,因为 FastAPI 的规范化行为没有文档记录。

示例

from fastapi import FastAPI

app = FastAPI()


@app.get("/things/{thing_id}")
async def read_thing(query: str): ...

建议改为

from fastapi import FastAPI

app = FastAPI()


@app.get("/things/{thing_id}")
async def read_thing(thing_id: int, query: str): ...

修复安全性

此规则的修复被标记为不安全,因为修改函数签名可能会改变代码的行为。