在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" } )
定義自訂異常處理程序:
app = FastAPI()
測試自訂錯誤處理程序:
發送包含無效資料(例如請求正文中的額外資料)的請求以觸發異常處理程序。
<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>替代方案處理程序:或者,PlainTextResponse 可用於傳回簡單的訊息:透過執行下列步驟,您可以優雅地處理驗證錯誤並自訂返回的錯誤回應通過您的FastAPI 應用程式。
以上是如何自訂 FastAPI 中驗證錯誤的錯誤回應?的詳細內容。更多資訊請關注PHP中文網其他相關文章!