【发布时间】:2021-04-29 17:16:39
【问题描述】:
所以我有一个简单的fastapi模型如下:
from typing import List
from fastapi import Query, Depends, FastAPI
from pydantic import BaseModel
class QueryParams(BaseModel):
req1: float = Query(...)
opt1: int = Query(None)
req_list: List[str] = Query(...)
app = FastAPI()
@app.post("/test", response_model=QueryParams)
def foo(q: QueryParams = Depends()):
return q
使用以下命令:curl -X "POST" "http://localhost:8000/test?req1=1" -d '{["foo"]}'
但是!我需要它额外允许 uri 请求中的参数,如下所示:
curl -X "POST" "http://localhost:8000/test?req1=1&req_list=foo"
我知道如果我从 BaseModel 中取出 req_list,然后将它推到函数头中
from typing import List
from fastapi import Query, Depends, FastAPI
from pydantic import BaseModel
class QueryParams(BaseModel):
req1: float = Query(...)
opt1: int = Query(None)
app = FastAPI()
@app.post("/test", response_model=QueryParams)
def foo(q: QueryParams = Depends(), req_list: List[str] = Query(...)):
return q
它会起作用,但有什么方法可以将它保留在基本模型中?
【问题讨论】: