Введение

Pipe – это класс с декоратором @Injectable, который реализует интерфейс PipeTransform.

Использование труб

  • Преобразование: преобразование входных данных в нужный формат (строка в целое число).
  • Проверка: оценка входных данных и проверка. Если он действителен, передайте его, иначе выдайте исключение, если данные неверны.

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

Встроенные каналы

Ниже приведены каналы, которые были предоставлены платформой NestJs как встроенные каналы.

  • ValidationPipe
  • ParseUUIDPipe
  • Парсеинтпайп
  • ParseFloatPipe
  • ParseEnumPipe
  • ParseBoolPipe
  • ParseArrayPipe
  • Дефолтвалуепайп

Связывание труб

Давайте обсудим ParseUUIDPipe. Здесь он гарантирует, что обработчик передает правильный UUID в качестве параметра. Например, предположим, что мы хотим найти книгу по ее идентификатору. Допустим, идентификатор книги — это UUID. Мы должны убедиться, что он проходит через API и является допустимым UUID. В этой ситуации мы можем использовать этот ParseUUIDPipe для проверки идентификатора. Этот канал вызывается перед запуском обработчика

Ниже приведены два типа способов вызова каналов.

Используя приведенный выше канал, мы можем убедиться, что он передает правильный UUID или передает неправильный UUID. Если мы передаем недопустимый UUID, мы можем получить ошибку, как показано ниже, и предотвратить вызов метода с этой точки.

{

«Код статуса»: 400,

«сообщение»: «Проверка не удалась (ожидается uuid)»,

«ошибка»: «Неверный запрос»

}

В приведенном выше примере мы передаем класс ParseUUIDPipe, а не экземпляр, оставляя ответственность за создание экземпляра фреймворку и разрешая внедрение зависимостей. Как и в случае с каналами и охранниками, вместо этого мы можем передать экземпляр на месте. Передача экземпляра на месте полезна, если мы хотим настроить поведение встроенного канала, передав параметры:

Пользовательские каналы

Каждый канал должен реализовать метод transform() для выполнения контракта интерфейса PipeTransform. Этот метод имеет два параметра:

  • Value: аргумент, который мы передаем в канал.
  • Метаданные: метаданные аргументов.

Глобальные каналы

Раньше мы присоединяли канал непосредственно перед вызовом обработчика внутри уровня контроллера. Но к глобальному уровню можно присоединить любую трубу. Затем этот канал будет применяться к любому маршруту в любом контроллере во всем приложении.

Если трубу нужно указать только в одном модуле, мы можем привязать трубу внутри соответствующего модуля.

Заключение

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