自定义 FastAPI 中的错误处理
问题:
将无效的 JSON 请求发送到FastAPI 后端,会抛出错误并显示不可处理的实体状态代码 (422)。响应包含详细的错误详细信息,这对于用户友好的错误处理来说并不理想。有没有办法自定义错误响应?
答案:
要处理这种情况并自定义错误响应,可以重写 FastAPI 中的请求验证异常处理程序。以下是如何实现它:
首先,请记住您传递的是无效的 JSON,因此,服务器会正确响应 422 Unprocessable Entity 错误。
重写异常处理程序:
<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>
返回纯文本响应:
或者,您也可以返回自定义使用 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中文网其他相关文章!