РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
254 of 307 menu

Исключение ValidationException

Исключение ValidationException относится к семейству исключений FastAPI, связанных с валидацией входящих данных. Оно наследуется от RequestValidationError и возникает, когда данные запроса (тело, query-параметры, заголовки, path-параметры) не проходят проверку Pydantic-моделью или аннотациями типов. Чаще всего это исключение используется вместе с обработчиком exception_handler, чтобы перехватить стандартную ошибку и вернуть клиенту собственный формат ответа.

Синтаксис

from fastapi.exceptions import ValidationException raise ValidationException(errors)

Параметр errors содержит список ошибок валидации. Каждый элемент - это словарь с полями loc, msg и type.

Пример

Давайте перехватим ошибку валидации и вернём собственный ответ:

from fastapi import FastAPI, Request from fastapi.exceptions import ValidationException from fastapi.responses import JSONResponse from pydantic import BaseModel app = FastAPI() class Item(BaseModel): name: str price: int @app.exception_handler(ValidationException) async def validation_handler(request: Request, exc: ValidationException): return JSONResponse( status_code=422, content={'errors': exc.errors()} ) @app.post('/items/') async def create_item(item: Item): return item

Если отправить тело с неверным типом поля price, обработчик вернёт список ошибок:

{"errors": [{"loc": ["body", "price"], "msg": "Input should be a valid integer", "type": "int_parsing"}]}

Пример

Давайте вызовем исключение вручную внутри обработчика:

<+python+> from fastapi import FastAPI from fastapi.exceptions import ValidationException app = FastAPI() @app.get('/check/') async def check(value: int): if value < 0: raise ValidationException( errors=[{ 'loc': ['query', 'value'], 'msg': 'Value must be positive', 'type': 'value_error' }] ) return {'value': value} <-python+>

Результат выполнения кода для адреса /check/?value=-1:

{"errors": [{"loc": ["query", "value"], "msg": "Value must be positive", "type": "value_error"}]}

Смотрите также

  • исключение RequestValidationError,
    базовый класс для ошибок валидации запроса
  • метод errors,
    который возвращает список ошибок валидации
  • исключение HTTPException,
    которое используется для возврата HTTP-ошибок
  • исключение WebSocketRequestValidationError,
    которое возникает при ошибке валидации WebSocket-запроса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить