Метод errors
Метод errors применяется к объекту исключения
RequestValidationError.
Он возвращает список словарей, каждый из которых
описывает одну ошибку валидации входных данных.
Каждый словарь содержит поля loc, msg, type,
а иногда и ctx.
Поле loc - это путь до проблемного места,
msg - человекочитаемое сообщение,
type - машинный код ошибки.
Метод не принимает параметров.
Синтаксис
exc.errors()
Пример
Давайте перехватим ошибку валидации и выведем её список ошибок:
from fastapi import FastAPI
from fastapi.exceptions import RequestValidationError
from fastapi.responses import JSONResponse
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
name: str
age: int
@app.exception_handler(RequestValidationError)
async def handler(request, exc):
return JSONResponse(
status_code=422,
content={'errors': exc.errors()}
)
@app.post('/user')
def create_user(user: User):
return user
Отправим запрос с неверными данными:
curl -X POST http://127.0.0.1:8000/user -H "Content-Type: application/json" -d '{"name": "abcde", "age": "old"}'
Результат выполнения кода:
{"errors": [{"type": "int_parsing", "loc": ["body", "age"], "msg": "Input should be a valid integer, unable to parse string as an integer", "input": "old"}]}
Пример
Давайте соберём все сообщения об ошибках в одну строку:
from fastapi import FastAPI
from fastapi.exceptions import RequestValidationError
from fastapi.responses import JSONResponse
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
name: str
age: int
@app.exception_handler(RequestValidationError)
async def handler(request, exc):
messages = [err['msg'] for err in exc.errors()]
return JSONResponse(
status_code=422,
content={'text': '; '.join(messages)}
)
@app.post('/user')
def create_user(user: User):
return user
Отправим запрос с пропущенными полями:
curl -X POST http://127.0.0.1:8000/user -H "Content-Type: application/json" -d '{}'
Результат выполнения кода:
{"text": "Field required; Field required"}
Смотрите также
-
класс
RequestValidationError,
который возникает при ошибке валидации запроса -
класс
HTTPException,
который позволяет вернуть произвольный HTTP-ответ с ошибкой -
класс
WebSocketRequestValidationError,
который возникает при ошибке валидации WebSocket-сообщения -
класс
ValidationException,
который выбрасывается при ошибке валидации данных