Формулировка проблемы

  1. Проверка простой схемы
  2. Один маршрут, разная проверка схемы
  3. Одновременная проверка нескольких схем по одному маршруту.

По мере того, как мы приближаемся к идеалу. Схема запрос / ответ - одна из основных проблем разработчиков. Мы выполняем все операции, а затем делаем вывод, что в запросе || требуются какие-то ключи. ответ отсутствовал, по причине отсутствия результатов.

Итак, для решения таких проблем Fastify поставляется со встроенным валидатором схемы, но есть некоторые недостатки, которые мы вскоре обсудим.

Ответ на нашу проблему №1

Описание проблемы - простая проверка JSON

В маршруте раздел определяет вашу схему вместе с маршрутом.

Fastify внутренне проверяет определенную схему и,

Если верно - ›, то переходит к следующей функции определения. Иначе - ›возвращает ошибку из самого маршрута.

Но нет никакого упоминания решения наших проблемы №2 и проблемы №3. Для этого я использовал ajv (еще один валидатор схемы JSON), тот же, который Fastify использует внутри себя. Я объединил то же самое с методом route beforeHandler для решения нашей задачи.

Ответ на нашу проблему №2

Постановка проблемы. Один и тот же маршрут, проверка другой схемы на основе параметров запроса.

Для этого я добавил к маршруту beforeHandler, и новый раздел маршрута выглядит так:

метод: «POST»,

url: ‘/ xms / v1 / user / policy / assign’,

beforeHandler: userLevelBeforeHandler,

обработчик: assignUserPoliciesHandler

Здесь тип схемы, которую нужно выбрать, уже определен в запросе и выбирается непосредственно из schemaMapper при каждом запросе по тому же маршруту.

Ответ на нашу проблему №3

Постановка проблемы - несколько проверок схемы для одного и того же маршрута.

Может случиться так, что для одного и того же маршрута вам может потребоваться проверка нескольких схем. Например, для политик типа массив имеет разные схемы политик для каждой политики.

Новый участок маршрута выглядит так:

метод: «POST»,

url: ‘/ xms / v1 / user / policy / assign’,

beforeHandler: userLevelBeforeHandler,

обработчик: assignUserPoliciesHandler

Здесь аналогичным образом групповая схема выбирает одну схему за раз из массива политик на основе policyId и проверяет ее с исходной политикой, полученной в запросе.

Вы также можете добавить валидатор схемы тела, подобный тому, который я добавил, помимо проверки политик, о которой мы говорили выше, в моем случае он называется validBodyStructure, который выбирает определенную структуру тела и проверяет ее, прежде чем углубляться в часть политик.

Итак, в заключение, с помощью нескольких функций мы можем не только проверять схему, но и по-своему играть с проверками схемы.

Если у вас есть вопросы, напишите через Gmail