代码之家  ›  专栏  ›  技术社区  ›  Simon

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

  •  0
  • Simon  · 技术社区  · 4 年前

    我正在使用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对有效列表的定义?

    2 回复  |  直到 4 年前
        1
  •  4
  •   tzaman    4 年前

    我很确定你的POST方法参数需要对整个请求体进行建模,它实际上是一个对象,而不是一个列表。
    为了匹配你试图发送的尸体,你需要这样的东西:

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

    然后:

    def create_mails(notas: schemas.NotaList) 
    
    推荐文章