在 FastAPI 中,當遇到無效請求時,通常會回應 422 Unprocessable Entity 錯誤。此回應可能並不總是符合所需的使用者體驗。以下是如何自訂錯誤回應以滿足您的應用程式的特定要求。
預設錯誤回應包括「額外資料」和「實際」資料等詳細資訊。為了自訂此回應,FastAPI 提供了重寫請求驗證異常處理程序的功能。如下面的程式碼範例所示,您可以定義自訂處理程序:
<code class="python">from fastapi import FastAPI, Body, Request, status from fastapi.encoders import jsonable_encoder from fastapi.exceptions import RequestValidationError from fastapi.responses import JSONResponse from pydantic import BaseModel app = FastAPI() @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">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 的錯誤回應的詳細內容。更多資訊請關注PHP中文網其他相關文章!