Вступить в клуб →
средняяpythonКонтракты API: OpenAPI, ошибки и маппинг данных

Проверка тела запроса по упрощённому контракту

Контракт задан словарём: {поле: {"type": ..., "required": bool, "nullable": bool}}. Типы: "string", "integer", "number", "boolean".

Напишите validate(payload, contract), которая возвращает список ошибок вида "поле: причина".

  • missing — обязательного поля нет в payload;
  • null — значение None, а nullable ложно (при истинном nullable None допустим);
  • type — тип не совпадает. integer — только int; number — int или float; boolean — только bool; string — только str. Значения True/False не считаются ни integer, ни number;
  • unknown — поля нет в контракте.

Необязательное отсутствующее поле — не ошибка. Верните список, отсортированный по возрастанию. Если ошибок нет — пустой список.

заготовка решения

def validate(payload, contract):
    # ваш код
    return None

🔒 Проверка ответа — для участников клуба

  • Автотесты прямо в браузере
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела