在使用FastAPI的时候,如果我们想使用Form表单提交数据这个时候使用示例如下:
1 | from fastapi import FastAPI, Form |
但是这种方式当参数过多,或者更高级的验证的时候就会显得复杂,能不能使用pydantic
的BaseModel
验证Form
请求呢?
多方查找终于在 stackoverflow 找到了这个问答:fastapi form data with pydantic model
这个文档再FastAPI的官方github上引出了一个issue:multipart/form-data: Unable to parse complex types in a request form
从issue中我选择了一个最优的解决方案:
1 | def as_form(cls: Type[BaseModel]) -> Type[BaseModel]: |
上面这个装饰器还支持参数类型递归
使用示例:
1 |
|
这样我们提交的Form表单也能使用pydantic
的BaseModel
验证了。