fix: обработчик 422 — актуальная константа статуса и сериализация ctx ошибок валидации
Без jsonable_encoder ValueError из field_validator давал 500 вместо 422; HTTP_422_UNPROCESSABLE_ENTITY помечена устаревшей в starlette. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
aaf9490a8d
commit
953d978cc7
@ -1,4 +1,5 @@
|
||||
from fastapi import FastAPI, HTTPException, Request, status
|
||||
from fastapi.encoders import jsonable_encoder
|
||||
from fastapi.exceptions import RequestValidationError
|
||||
from fastapi.responses import JSONResponse
|
||||
from sqlalchemy.exc import IntegrityError, SQLAlchemyError
|
||||
@ -8,8 +9,9 @@ def register_exception_handlers(app: FastAPI) -> None:
|
||||
@app.exception_handler(RequestValidationError)
|
||||
async def request_validation_exception_handler(_: Request, exc: RequestValidationError):
|
||||
return JSONResponse(
|
||||
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
||||
content={"detail": exc.errors()},
|
||||
status_code=status.HTTP_422_UNPROCESSABLE_CONTENT,
|
||||
# ctx ошибки может содержать исключение (ValueError из валидатора) — сериализуем через jsonable_encoder
|
||||
content={"detail": jsonable_encoder(exc.errors())},
|
||||
)
|
||||
|
||||
@app.exception_handler(IntegrityError)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user