请求中未找到来自 swagger GUI 的布尔路径参数

问题描述 投票:0回答:1

我有一个 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
)。

validation swagger fastapi swagger-ui pydantic
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.