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

Метод 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,
    который выбрасывается при ошибке валидации данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить