问题描述
我正在使用FastAPI,并且试图将JSON对象的JSON数组发送到正文中的post终结点。 我的端点定义为:
@router.post("/create_mails")
def create_mails(notas: List[schemas.Nota],db: Session = Depends(get_db)):
我在邮递员的尸体看起来像:
{
"notas": [{"a":"1","b":"2","c":"3","d":"4"},{"a":"1","d":"4"}]
}
但是,我不断从FastAPI收到422无法处理的实体错误,并带有错误详细信息:
值不是有效列表
我还用修改后的端点对其进行了测试:
@router.post("/create_mails")
def create_mails(notas: List[str] = Body([]),db: Session = Depends(get_db)):
我是否缺少FastAPI对有效列表的定义?
解决方法
我很确定您的POST方法参数需要为整个请求主体建模,这实际上是单个对象,而不是列表。
要匹配您要发送的正文,您需要以下内容:
class NotaList(BaseModel):
notas: List[Nota]
然后:
def create_mails(notas: schemas.NotaList)
,
您的JSON不是有效列表。这是一个JSON对象,具有一个名为“ notas”的属性,该属性是一个列表。
{
"notas": [{"a":"1","b":"2","c":"3","d":"4"},{"a":"1","d":"4"}]
}
尝试一下
[
{"a":"1","d":"4"}
]