在FastAPI 自訂錯誤回應
收到無效的JSON 要求時,FastAPI 通常會傳回422 無法處理的實體錯誤,並包含有關該問題的詳細資訊。但是,可以使用您自己的訊息和結構自訂此錯誤回應。
處理此問題的一種方法是覆寫預設的請求驗證異常處理程序。這可以透過實作自訂異常處理程序裝飾器來完成。以下是修改錯誤回應以包含自訂訊息的範例:
<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 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"} }), ) class Demo(BaseModel): content: str = None @app.post("/demo") async def demo_func(d: Demo): return d.content</code>
此異常處理程序將傳回帶有自訂訊息的 JSON 回應,以及原始驗證錯誤和請求正文。
或者,您可以將錯誤回應自訂為純文字訊息:
<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>
此處理程序將輸出表示錯誤訊息的簡單純文字字串。這兩種方法都允許您自訂錯誤回應,以便為您的 API 用戶提供更用戶友好或上下文特定的訊息。
以上是如何在 FastAPI 中自訂錯誤回應?的詳細內容。更多資訊請關注PHP中文網其他相關文章!