我已经在 FastAPI 中实现了一个端点,并且正在从 Postman 测试它。但是每当我发送请求时,我都会收到此错误“解析正文时出错”,在搜索错误时,我在需要安装 python-multipart 的地方找到了一个解决方案,这个包已经安装了,但我仍然面临这个问题错误。
以下是我的代码:
@router.put('/user')
def update_user(user_data: dict):
from crain.uma import update_user
user_id = user_data['id']
update_user(user_id, user_data)
return {"message": "DONE"}
除了像这样的字典之外的端点:
user_data = {
"username":"admin",
"id":"2d06aa3b-c25a-4499-948a-86341ac4adc5",
"email":null,
"firstName":"admin",
"lastName":"admin",
"createdTimestamp":1638268009973
},
![enter image description here](https://i.stack.imgur.com/56jJN.png)
简而言之,您的端点期望JSON
数据,但您的客户端发送form-data
反而。因此,通过 Postman 发送请求时,你应该去Body
,然后选择raw
,最后选择JSON
从下拉列表中,如中所述这个答案.
此外,我强烈建议使用 Pydantic 模型来发送 JSON 数据,如文档。因此,您可以利用 Pydantic 提供的数据验证。你甚至可以使用EmailStr
用于验证电子邮件输入的类型(需要电子邮件验证器要安装,如中所述文档)。下面的例子:
from pydantic import BaseModel, EmailStr
from datetime import datetime
class User(BaseModel):
username: str
id: str
email: EmailStr = None
firstName: str
lastName: str
createdTimestamp: datetime
@app.put('/user')
def update_user(user_data: User):
from crain.uma import update_user
user_data = user_data.dict()
user_id = user_data['id']
update_user(user_id, user_data)
return {"message": "DONE"}
JSON 有效负载应如下所示:
{
"username":"admin",
"id":"2d06aa3b-c25a-4499-948a-86341ac4adc5",
"email":null,
"firstName":"admin",
"lastName":"admin",
"createdTimestamp":1638268009973
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)