我正在寻找一些库或代码示例,以将FastAPI验证消息格式化为人类可读的格式。例如,此端点:
@app.get("/")
async def hello(name: str):
return {"hello": name}
如果缺少name
查询参数,将生成下一个json输出:
{
"detail":[
{
"loc":[
"query",
"name"
],
"msg":"field required",
"type":"value_error.missing"
}
]
}
所以我的问题是,如何:
1.将其转换为类似于“name field is required”(对于所有可能的错误)的内容,以便在toast中显示。
1.使用它来显示表单验证消息
1.如果可能的话,从api描述生成表单本身
3条答案
按热度按时间bvpmtnay1#
FastAPI具有出色的异常处理功能,因此您可以通过多种方式自定义异常。
你可以引发一个HTTPException,HTTPException是一个普通的Python异常,包含了与API相关的附加数据。
通过将
name: str
添加为查询参数,它将自动变为必需参数,因此您需要添加Optional
但在您的情况下,我认为这是处理FastAPI重写
validation_exception_handler
中的错误的最佳方式:您将得到这样的响应:
您可以自定义您的
content
,但如果你喜欢:pieyvz9o2#
我带着一个类似的问题来到这里--最后我处理了
RequestValidationError
,给予了一个响应,其中每个字段都是该字段的问题数组。这对于在snackbar通知的前端进行管理非常方便,并且足够灵活。
这是负责人
6jjcrrmo3#
我想我能想到的最好的答案是
PlainTextResponse
添加以下内容:
您会得到一个更人性化的错误消息,如以下纯文本格式:
在这里的FastAPI文档中有详细的说明。