Fast API 接受必填字段的空值

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

我有一个 POST Api,我正在向它传递一个强制性字符串参数,比如 test_field。当我运行 API 并且不向 test_field 传递任何值时,它不允许 API 执行,因为它是必需的参数,而我没有传递必需的值。

但是当我使用 curl 命令调用 API 并向查询参数发送一个空值时,它正在接受它,并给出 200 响应。

“POST /api/v1/test_api?test_field= HTTP/1.1” 200 OK

我的 test_field 是一个字符串字段 - test_field: str

尽管当我使用 Body(...) 参数时 - test_field : str = Body(...),curl 命令拒绝该操作并说缺少所需的字段。

这怎么可能? API 如何接受必填字段的空值?

正在使用的 FastAPI 版本:0.95.0 Pydantic:1.10.7 蟒蛇:3.9.16

python fastapi pydantic
1个回答
0
投票

发出请求 POST /api/v1/test_api?test_field= 时,test_field 参数设置为空字符串。因此,为了确保只接受非空字符串,您可能需要使用 Pydantic 的类型 constr 并设置 min_length 属性。

所以,它将是:

from pydantic import constr

...
... test_field: constr(min_length=1) ...
© www.soinside.com 2019 - 2024. All rights reserved.