koz*_*man 4 python python-3.x pydantic fastapi
我有这样的 FastAPI 函数:
@router.post("/test/")
async def test(ids: List[str] = Body(..., )):
# some logic
Run Code Online (Sandbox Code Playgroud)
我想要根据需要“ids”字段并传递诸如[“1”,“2”]之类的值。如果我通过一个有效的列表,它工作正常。但是如果我传递空列表 - [],这也将是有效的参数,我不希望这样。我可以很容易地编写自己检查它的函数,但从我对这个美妙框架的经验来看,FastAPI 已经涵盖了它,但我只是不知道如何实现。
from pydantic import BaseModel, validator
class MyModel(BaseModel):
ids: List[str] = []
@validator('ids', pre=True, always=True)
def validate_ids_length(cls, value):
if len(value) == 0:
raise ValueError("empty list not allowed")
return value
@demo_app.post("/test/")
async def test(data: MyModel = Body(...)):
return dataRun Code Online (Sandbox Code Playgroud)
min_items的参数Fieldfrom pydantic import BaseModel, Field
class MyModel(BaseModel):
ids: List[str] = Field(..., min_items=1)
@demo_app.post("/test/")
async def test(data: MyModel = Body(...)):
return dataRun Code Online (Sandbox Code Playgroud)
示例 cURL 请求:
curl -X POST "http://0.0.0.0:8000/test/" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"ids\":[\"string\"]}"Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9873 次 |
| 最近记录: |