Выбор ответа Senior JSON и JSON Schema обновлено

Ключевое слово format

Вопрос

В схеме стоит {"type": "string", "format": "email"}. Валидатор по умолчанию пропустил значение "не email". Почему?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: В 2020-12 format по умолчанию лишь аннотация, проверку включают в валидаторе. В draft 2020-12 format относится к словарю format-annotation: валидаторы не обязаны его проверять.

Варианты ответа

  1. В 2020-12 format по умолчанию лишь аннотация, проверку включают в валидатореправильный ответ
  2. Валидатор сломан: format проверяется стандартом так же строго, как type
  3. Формат email не входит в стандарт, валидатор его просто не знает
  4. format проверяется, только если рядом задан pattern с регулярным выражением

Разбор

В draft 2020-12 format относится к словарю format-annotation: валидаторы не обязаны его проверять. Многие библиотеки включают проверку отдельной опцией или плагином (например ajv-formats в ajv). Формат email в стандарте есть. Вывод для автотестов: убедиться, что проверка форматов действительно включена, иначе тест зелёный впустую.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.