首页 >后端开发 >Python教程 >如何自定义 FastAPI 中验证错误的错误响应?

如何自定义 FastAPI 中验证错误的错误响应?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-21 06:23:30810浏览

How to Customize Error Responses for Validation Errors in FastAPI?

在 FastAPI 中自定义错误响应

当接收到包含无效或意外数据的请求时,通常需要返回自定义的错误响应,而不是返回默认 FastAPI 响应。本指南解决了如何在 FastAPI 中处理和自定义错误响应。

具体来说,所描述的问题涉及在请求正文中接收额外数据,这会导致 422 无法处理实体错误和默认错误详细信息。目标是优雅地处理此错误并返回自定义响应,例如:

<code class="json">{
  "error": {
    "message": "Invalid JSON body"
  },
  "status": 0
}</code>

要自定义错误响应,FastAPI 允许覆盖验证错误的异常处理程序。以下步骤概述了如何实现此目的:

  1. 导入必要的库:

    from fastapi import FastAPI, Body, Request, status
    from fastapi.exceptions import RequestValidationError
    from fastapi.responses import JSONResponse
  2. 定义自定义异常处理程序:

    @app.exception_handler(RequestValidationError)
    async def validation_exception_handler(request: Request, exc: RequestValidationError):
        return JSONResponse(
            status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
            content={
                "detail": exc.errors(),  # optionally include the errors
                "body": exc.body,
                "custom msg": "Your error message"
            }
        )
  3. 使用 FastAPI 应用程序注册自定义处理程序:

    app = FastAPI()
  4. 测试自定义错误处理程序:
    发送包含无效数据(例如请求正文中的额外数据)的请求以触发异常处理程序。

替代方案处理程序:

或者,PlainTextResponse 可用于返回简单的消息:

<code class="python">from fastapi.responses import PlainTextResponse

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

通过执行以下步骤,您可以优雅地处理验证错误并自定义返回的错误响应通过您的 FastAPI 应用程序。

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

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