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): ...
修复安全性
此规则的修复被标记为不安全,因为修改函数签名可能会改变代码的行为。