在 FastAPI 中自定义错误响应
当接收到包含无效或意外数据的请求时,通常需要返回自定义的错误响应,而不是返回默认 FastAPI 响应。本指南解决了如何在 FastAPI 中处理和自定义错误响应。
具体来说,所描述的问题涉及在请求正文中接收额外数据,这会导致 422 无法处理实体错误和默认错误详细信息。目标是优雅地处理此错误并返回自定义响应,例如:
<code class="json">{ "error": { "message": "Invalid JSON body" }, "status": 0 }</code>
要自定义错误响应,FastAPI 允许覆盖验证错误的异常处理程序。以下步骤概述了如何实现此目的:
导入必要的库:
from fastapi import FastAPI, Body, Request, status from fastapi.exceptions import RequestValidationError from fastapi.responses import JSONResponse
定义自定义异常处理程序:
@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" } )
使用 FastAPI 应用程序注册自定义处理程序:
app = FastAPI()
替代方案处理程序:
或者,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中文网其他相关文章!