【发布时间】:2022-10-07 00:24:39
【问题描述】:
我有以下 FastAPI 后端:
from fastapi import FastAPI
app = FastAPI
class Demo(BaseModel):
content: str = None
@app.post(\"/demo\")
async def demoFunc(d:Demo):
return d.content
问题是,当我向这个 API 发送带有额外数据的请求时,例如:
data = {\"content\":\"some text here\"}aaaa
或者
data = {\"content\":\"some text here\"aaaaaa}
resp = requests.post(url, json=data)
在data = {\"content\":\"some text here\"}aaaa 的情况下,它会在返回字段中使用Actual(\"some text here\") 和Extra(\"aaaaa\") 数据引发状态码422 unprocessable entity 错误:
{
\"detail\": [
{
\"loc\": [
\"body\",
47
],
\"msg\": \"Extra data: line 4 column 2 (char 47)\",
\"type\": \"value_error.jsondecode\",
\"ctx\": {
\"msg\": \"Extra data\",
\"doc\": \"{\\n \\\"content\\\": \\\"some text here\\\"}aaaaa\",
\"pos\": 47,
\"lineno\": 4,
\"colno\": 2
}
}
]
}
我试图将行 app=FastAPI() 放在 try-catch 块中,但是它不起作用。有什么办法可以用自己的响应而不是上面提到的自动响应来处理这个问题?
像这样的东西:
{\"error\": {\"message\": \"Invalid JSON body\"},
\"status\": 0}
-
你期望结果是什么?这是无效的 JSON,那么您要如何解析呢?
-
我想显示自定义响应而不是来自 api 本身的自动响应。
-
你见过fastapi.tiangolo.com/tutorial/handling-errors - 它告诉你如何覆盖特定的错误并自己处理响应。
-
我看到了,但无法正确获取它。但是感谢克里斯,现在解决了,也谢谢@MatsLindh