如何在 FastAPI 中将查询参数的模式编写为变量
How to write schema for query parameters in FastAPI as variable
我有一个 get 函数,它接受多个查询参数,可能如下所示:
def get(
key: Optional[str] = "key"
value: Optional[str] = "value"
param1: Optional[int] = -1
)
我想做的是,我想把这些参数定义放在一个单独的变量中。有没有可能做这样的事情?
param_definition = { # some struct here, or maybe a Model class
key: Optional[str] = "key"
value: Optional[str] = "value"
param1: Optional[int] = -1
}
def get(*params: param_definition):
...
这能做到吗?如果没有,是否可以在这里完成类似且更易于维护的操作?
您需要使用如下所示的json方式:
param_definition = [
# some struct here, or maybe a Model class
{
"key" : "key",
"value" : "value",
"param1" : -1
}
]
def get():
print(param_definition)
get()
您可以将 Pydantic 模型与 Depends()
class 一起使用
from fastapi import FastAPI, <b>Depends</b>
from pydantic import BaseModel
from typing import Optional
app = FastAPI()
<b>class MyParams(BaseModel):
key: Optional[str] = "key"
value: Optional[str] = "value"
param1: Optional[int] = -1</b>
@app.get("/")
def my_get_route(<b>params: MyParams = Depends()</b>):
return params
这也会自动为我们生成 API doc。
参考:
我有一个 get 函数,它接受多个查询参数,可能如下所示:
def get(
key: Optional[str] = "key"
value: Optional[str] = "value"
param1: Optional[int] = -1
)
我想做的是,我想把这些参数定义放在一个单独的变量中。有没有可能做这样的事情?
param_definition = { # some struct here, or maybe a Model class
key: Optional[str] = "key"
value: Optional[str] = "value"
param1: Optional[int] = -1
}
def get(*params: param_definition):
...
这能做到吗?如果没有,是否可以在这里完成类似且更易于维护的操作?
您需要使用如下所示的json方式:
param_definition = [
# some struct here, or maybe a Model class
{
"key" : "key",
"value" : "value",
"param1" : -1
}
]
def get():
print(param_definition)
get()
您可以将 Pydantic 模型与 Depends()
class 一起使用
from fastapi import FastAPI, <b>Depends</b>
from pydantic import BaseModel
from typing import Optional
app = FastAPI()
<b>class MyParams(BaseModel):
key: Optional[str] = "key"
value: Optional[str] = "value"
param1: Optional[int] = -1</b>
@app.get("/")
def my_get_route(<b>params: MyParams = Depends()</b>):
return params
这也会自动为我们生成 API doc。
参考: