如何解决FastAPI发现我的JSON对象数组无效列表
我正在使用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"}
]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。