![](/img/trans.png)
[英]How to change the default Pydantic error message using FastAPI?
[英]How can I overwrite the default behavior of pydantic validation errors in FastAPI?
我想覆蓋驗證錯誤的默認行為,以輸出如下內容:
{
"detail": [
{
"loc": [
"query",
"email"
],
"msg": "value is not a valid email address",
"type": "value_error.email"
}
]
}
至
{
"type": "/errors/unprocessable_entity",
"title": "Unprocessable Entity",
"status": 422,
"detail": "The request is invalid.",
"instance": "/api/test/email",
"issues": [
{
"loc": [
"query",
"email"
],
"msg": "value is not a valid email address",
"type": "value_error.email"
}
]
}
我嘗試使用 API 異常處理程序,例如:
from fastapi import FastAPI, Query
from fastapi.responses import JSONResponse
from pydantic import EmailStr, error_wrappers
app = FastAPI()
@app.get("/api/test/email")
async def test_email(email: EmailStr = Query(...)):
return "Success"
@app.exception_handler(error_wrappers.ValidationError)
def format_validation_error_as_rfc_7807_problem_json(request: Request, exc: error_wrappers.ValidationError):
content = {
"type": f"/errors/unprocessable_entity",
"title": "Unprocessable Entity",
"status": exc.status_code,
"detail": "The request is invalid.",
"instance": request.url.path,
"issues": exc.errors()
}
return JSONResponse(**content, status_code=exc.status_code
但是,當您輸入無效的電子郵件時,永遠不會調用函數format_validation_error_as_rfc_7807_problem_json
。
只是使用了錯誤的異常處理程序,而是執行以下操作:
from fastapi.exceptions import RequestValidationError
@api.exception_handler(RequestValidationError)
async def format_validation_error_as_rfc_7807_problem_json(request: Request, exc: error_wrappers.ValidationError):
status_code = status.HTTP_422_UNPROCESSABLE_ENTITY
content = {
"type": f"/errors/unprocessable_entity",
"title": "Unprocessable Entity",
"status": status_code,
"detail": "The request is invalid.",
"instance": request.url.path,
"issues": jsonable_encoder(exc.errors()),
}
return JSONResponse(content, status_code=status_code)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.