FastAPI 中的可选查询参数

ksr*_*ini 15 python optional-parameters fastapi

我不明白FastAPI 中的可选查询参数。它与默认值为 的默认查询参数有何不同None

如上面链接中所述,下面的示例中的可选查询参数arg1与 之间有什么区别?arg2arg2

@app.get("/info/")
async def info(arg1: int = None, arg2: int | None = None):
    return {"arg1": arg1, "arg2": arg2}
Run Code Online (Sandbox Code Playgroud)

Mat*_*ndh 22

FastAPI 参考手册对此进行了介绍,尽管只是一个小注释:

async def read_items(q: Optional[str] = None):
Run Code Online (Sandbox Code Playgroud)

FastAPI 会知道 q 的值不是必需的,因为默认值 = None。

Optional[str]FastAPI 不使用Optional ,但它可以让您的编辑器为您提供更好的支持并检测错误。

(其他读者与3.10之前Optional[str]相同)str | None

由于您的编辑器可能不知道 FastAPI 填充和使用参数的上下文,因此当参数未标记为 时,可能难以理解函数的实际签名Optional。您可能关心也可能不关心这种区别。