FastAPI 中的可选查询参数
我不明白 FastAPI 中的可选查询参数。它与默认值为 的默认查询参数有何不同没有?
在下面的示例中,arg1
和 arg2
之间有什么区别,其中 arg2
被设置为可选查询参数(如上面链接中所述)?
@app.get("/info/")
async def info(arg1: int = None, arg2: int | None = None):
return {"arg1": arg1, "arg2": arg2}
I don't understand optional query parameters in FastAPI. How is it different from default query parameters with a default value of None
?
What is the difference between arg1
and arg2
in the example below where arg2
is made an optional query parameter as described in the above link?
@app.get("/info/")
async def info(arg1: int = None, arg2: int | None = None):
return {"arg1": arg1, "arg2": arg2}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
FastAPI 参考手册中对此进行了介绍,尽管只是一个小内容笔记:
(对于其他读者来说,
Optional[str]
与 3.10 之前的str | None
相同)因为您的编辑可能不知道该参数由 FastAPI 填充和使用,当参数未标记为
可选
时,可能难以理解函数的实际签名。您可能关心也可能不关心这种区别。This is covered in the FastAPI reference manual, albeit just as a small note:
(
Optional[str]
is the same asstr | None
pre 3.10 for other readers)Since your editor might not be aware of the context in which the parameter is populated and used by FastAPI, it might have trouble understanding the actual signature of the function when the parameter is not marked as
Optional
. You may or may not care about this distinction.除了 @MatsLindh 的答案之外,您还可以使用带有
default
参数集的fastapi.Query
类。例如:
定义一个函数
get_companies
,带有可选的company_id
(在请求参数中解析为id
)、可选的limit< /code>,以及可选的
页面
。要将参数标记为必需,您可以删除default=
参数。In addition to the answer by @MatsLindh, you can also use the
fastapi.Query
class with adefault
parameter set.For example:
defines a function
get_companies,
with an optionalcompany_id
(parsed in the request arguments asid
), an optionallimit
, as well as an optionalpage
. To mark the argument as required, you can remove thedefault=
param.python 3.10之前,是:
referencia https://fastapi.tiangolo.com/教程/查询参数/#可选参数
Before 3.10 python, is:
referencia https://fastapi.tiangolo.com/tutorial/query-params/#optional-parameters
这取决于您看待它的方式,但我的理念是:
可选参数是包含查询参数的更大集合。
也就是说,查询参数采用作为值的输入,而可选参数是可以没有值(即无)的查询参数。
It depends on the way you see it, but my philosophy is:
Optional parameters are a bigger set that includes query parameters.
That is, query parameters take an input that is a value, while optional parameters are query parameters that can have no value (i.e. None).