JSON Schema: от основ до продакшена
Ключевых слов много, но ежедневно используются лишь дюжина. Правильно освойте type/properties/required/$ref, хорошо обработайте сообщения об ошибках — и покроете восемьдесят процентов реальных случаев.
Опишите форму ваших данных через JSON Schema, превратите словесные договорённости в исполняемую валидацию и позвольте ей в свою очередь управлять типами TypeScript и генерацией форм.
Статей: 7Ключевых слов много, но ежедневно используются лишь дюжина. Правильно освойте type/properties/required/$ref, хорошо обработайте сообщения об ошибках — и покроете восемьдесят процентов реальных случаев.
Типы и схемы покрывают по одному отрезку: один во время компиляции, один во время выполнения. Вопрос не в том, что выбрать, а в том, как автоматически держать оба в синхронизации.
Сгенерированные схемы часто блокируют валидные данные. Узнайте, почему более богатые образцы дают худшие схемы, затем workflow: выборка по нескольким записям, семантическое дополнение, точное указание ошибок.
$ref решает переиспользование, allOf и oneOf решают композицию, и именно их наложение ломает всё. Рассматривает $id, $defs, условия, рекурсию, объединение и отладку.
Валидатор выдаёт машинные ошибки; пользователи хотят знать, какое поле неверно. Рассматривает массив errors Ajv, instancePath против schemaPath, группировку и формулировки.
Успешная валидация не значит чистые данные. Pydantic по умолчанию игнорирует неизвестные поля, Zod их отбрасывает, Ajv пропускает — выдуманные параметры и опечатки проходят тихо. Статья показывает три формы молчаливого принятия и даёт полные рецепты: закрывать объекты, контролировать приведение типов, подтягивать каждый уровень вложенности.
Схема не заканчивается написанием — именно с неё начинается деградация. Одна опечатка тихо ослабляет валидацию, один рефакторинг ломает все фикстуры. Здесь разобран рабочий набор контрактного тестирования: позитивные, негативные и снапшот-фикстуры, линт самой схемы, однократная компиляция с повторным использованием и четыре ворот CI, превращающих поломку контракта в красную сборку.