我有一个 FastAPI 端点:
@router.post("/")
def create_vacation(
request: fastapi.Request,
paid: bool = False,
) -> None:
print(request.url, paid)
在招摇中,显示的url是:
http://127.0.0.1:880/vacation/?paid=true
和 cURL cmd:
curl -X 'POST' \
'http://127.0.0.1:880/vacation/?paid=true' \
-H 'accept: application/json' \
-d ''
结果是:
http://127.0.0.1:880/vacation/?paid=true True
但是当使用 swagger GUI 时,
print(request.url, paid)
显示:
http://127.0.0.1:880/vacation/ False
我使用 FastAPI 多年,这对我来说仍然是第一次。有线索吗?
我使用最新版本的fastapi和pydantic(
0.113.0
和2.9.0
)。
看起来请求无法识别查询参数?paid
您是否在 Swagger 中的参数下看到了
(query)
您可以尝试将
Annotated
与 Query
一起使用,可能有助于解决问题
@router.post("/")
def create_vacation(
request: fastapi.Request,
paid: Annotated[bool,fastapi.Query()] = False,
) -> None:
print(request.url, paid)