首頁 > 後端開發 > Python教學 > 如何在 FastAPI 中自訂錯誤回應?

如何在 FastAPI 中自訂錯誤回應?

DDD
發布: 2024-10-21 06:32:29
原創
949 人瀏覽過

How to Customise Error Responses in FastAPI?

在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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板