我正在使用FastAPI,并试图将JSON对象的JSON数组发送到我的post端点,在主体中。我的端点定义为:
@router.post("/create_mails")
def create_mails(notas: List[schemas.Nota], db: Session = Depends(get_db)):
Postman中的身体看起来像:
{
"notas": [{"a":"1","b":"2","c":"3","d":"4"},
{"a":"1","b":"2","c":"3","d":"4"}]
}
但是,我不断从FastAPI得到422 unprocessable entity错误,错误详细信息如下:
- 值不是有效列表 *
我还使用修改后的端点测试了它:
@router.post("/create_mails")
def create_mails(notas: List[str] = Body([]), db: Session = Depends(get_db)):
和一个简单的字符串数组,但返回相同的错误。
我是否错过了FastAPI对有效列表的定义?
1条答案
按热度按时间uidvcgyl1#
您的POST方法参数需要对整个请求体进行建模,这实际上是一个对象,而不是一个列表。
为了匹配你要发送的尸体,你需要这样的东西:
然后:
请注意,函数中的参数名称 * 不是 * 数据模型的一部分,它只是表示“顶级”主体对象。我在这里将其重命名为
body
以澄清这一点。请求体中的notas
将被分配给类的notas
成员,因此在您的方法中,您将访问以下内容(例如):