为了账号安全,请及时绑定邮箱和手机立即绑定

FastAPI 发现我的 JSON 对象数组是无效列表

FastAPI 发现我的 JSON 对象数组是无效列表

慕运维8079593 2023-07-18 17:55:19
我正在使用 FastAPI,并尝试将 JSON 对象的 JSON 数组发送到正文中的帖子端点。我的端点定义为:@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","b":"2","c":"3","d":"4"}]               }但是,我不断从 FastAPI 收到 422 无法处理的实体错误,错误详细信息:值不是有效列表我还使用修改后的端点对其进行了测试:@router.post("/create_mails")def create_mails(notas: List[str] = Body([]), db: Session = Depends(get_db)):并使用简单的字符串数组,但返回相同的错误。我是否缺少 FastAPI 对有效列表的定义?
查看完整描述

1 回答

?
萧十郎

TA贡献1815条经验 获得超12个赞

您的 POST 方法参数需要对整个请求正文进行建模,该正文实际上是单个对象,而不是列表。
为了匹配您尝试发送的正文,您需要类似的内容:

class NotaList(BaseModel):
    notas: List[Nota]

进而:

def create_mails(body: schemas.NotaList)

请注意,函数中的参数名称不是数据模型的一部分,它仅代表“顶级”主体对象。我已将其重命名为此body处以澄清这一点。请求正文中的notas将会被分配给notas类的成员,因此在您的方法中您将访问如下内容(例如):

for nota in body.notas:
   # do stuff


查看完整回答
反对 回复 2023-07-18
  • 1 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信