Формулировка проблемы
- Проверка простой схемы
- Один маршрут, разная проверка схемы
- Одновременная проверка нескольких схем по одному маршруту.
По мере того, как мы приближаемся к идеалу. Схема запрос / ответ - одна из основных проблем разработчиков. Мы выполняем все операции, а затем делаем вывод, что в запросе || требуются какие-то ключи. ответ отсутствовал, по причине отсутствия результатов.
Итак, для решения таких проблем 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 ❤