[英]FASTAPI: Getting Error 422 : Unprocessable Entity when trying to pass a json object inside body
我还没有看到我的问题的答案,所以在这里。
我正在尝试传递 json object 之类的:在fastapi中的post请求正文中,以便稍后将其存储在数据库中或以任何方式处理它
{
"action_reaction": {
"action": {
"name": "test"
},
"reaction": {
"name2": "test2"
}
}
}
这是我的代码:
class AddActionModel(BaseModel):
action_reaction: str = None
@router.post("/add_reaction")
async def add_action_reaction(addActionModel: AddActionModel, x_token: str = Header(None)):
print(f'addActionModel: {addActionModel}')
action_reactions = json.loads(addActionModel.action_reaction)
action = action_reactions["action"]
reaction = action_reactions["reaction"]
return {"success": True}
有谁知道如何做到这一点?
谢谢
您发送的 JSON 无效。
您的代码需要一个包含字符串值的 JSON object,您在服务器端对其进行解码。
为了使您的请求有效,您需要转义action_reaction
中的引号,如下所示:
{
"action_reaction": "{\"action\": {\"name\": \"test\"}, \"reaction\": {\"name2\": \"test2\"}}"
}
替代方案:为所有对象实现嵌套 model :
class Event(BaseModel):
name: str
class ActionReaction(BaseModel):
action: Event
reaction: Event
class AddActionModel(BaseModel):
action_reaction: ActionReaction = None
如果你这样定义,那么后端不需要json.loads
,因为整个 object 将被 FastAPI + Pydantic 解析。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.