首页 >后端开发 >Python教程 >如何在 FastAPI 中自定义无效 JSON 请求的错误响应?

如何在 FastAPI 中自定义无效 JSON 请求的错误响应?

Susan Sarandon
Susan Sarandon原创
2024-10-21 06:28:30841浏览

How to Customize Error Responses for Invalid JSON Requests in FastAPI?

自定义 FastAPI 中的错误处理

问题:

将无效的 JSON 请求发送到FastAPI 后端,会抛出错误并显示不可处理的实体状态代码 (422)。响应包含详细的错误详细信息,这对于用户友好的错误处理来说并不理想。有没有办法自定义错误响应?

答案:

要处理这种情况并自定义错误响应,可以重写 FastAPI 中的请求验证异常处理程序。以下是如何实现它:

首先,请记住您传递的是无效的 JSON,因此,服务器会正​​确响应 422 Unprocessable Entity 错误。

重写异常处理程序:

  1. 在您的 FastAPI 应用程序中,添加以下代码来覆盖 RequestValidationError 的默认异常处理程序:
<code class="python">@app.exception_handler(RequestValidationError)
async def validation_exception_handler(request: Request, exc: RequestValidationError):
    return JSONResponse(
        status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
        content=jsonable_encoder({
            "detail": exc.errors(),  # optionally include the errors
            "body": exc.body,
            "custom msg": {"Your error message"}
        }),
    )</code>
  1. 在上面的代码中,您可以通过修改“custom msg”的值来自定义错误消息。

返回纯文本响应:

或者,您也可以返回自定义使用 PlainTextResponse 的错误消息:

<code class="python">@app.exception_handler(RequestValidationError)
async def validation_exception_handler(request, exc):
    return PlainTextResponse(str(exc), status_code=422)</code>

以上是如何在 FastAPI 中自定义无效 JSON 请求的错误响应?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn