Перья-крючки позволяют легко создавать сложные рабочие процессы для управления и фильтрации как входящих данных до действий CRUD базы данных, так и исходящих данных после завершения операции с базой данных. Хуки - это цепочка небольших многоразовых функций, которые можно динамически регистрировать до или после вызова метода службы. Подробнее о концепциях хуков можно прочитать в Составление API-сервисов с хуками.

В этом посте я хотел бы поговорить о небольшой, но очень полезной функции грядущего выпуска Feathers Auk release, а именно о хуках обработки ошибок и глобальных хуках приложений. Самое приятное то, что вы уже можете использовать его в любом существующем приложении Feathers, обновив модуль feathers-hooks до полностью обратно совместимой версии 1.6.0.

Новый метод .hooks

Раньше вы могли регистрировать хуки каждого типа через service.before или service.after. Поскольку мы обычно регистрируем несколько типов ловушек одновременно, и мы не хотели добавлять новые методы непосредственно в службу для каждого нового типа ловушек (например, error), мы ввели новый метод service.hooks.
Он принимает объект с before , after и error, каждое из которых может иметь те же параметры, что и старые методы службы перехвата. Методы service.before и service.after все еще доступны, но в будущем могут стать устаревшими. В следующем примере показаны старый и новый способ регистрации перехватчиков и методов регистров, специфичных для перехватчиков и общего перехвата после:

Крючки ошибок

Для каждого метода обслуживания теперь также можно зарегистрировать перехватчики для обработки ошибок через service.hooks({ error: errorHooks }). Он работает точно так же, как и другие хуки, и дополнительно позволяет вам читать и изменять объект hook.error. Перехватчики ошибок перехватывают все ошибки методов службы, независимо от того, исходят ли они от самого метода службы или от другого до или после перехвата. Это отлично подходит для регистрации ошибок или локализации и настройки возвращаемой ошибки:

Хуки приложений

Другой довольно распространенный случай - это хуки, которые должны запускаться для всех служб в приложении. В сочетании с новыми обработчиками ошибок одним из сценариев может быть регистрация каждой ошибки при каждом вызове метода. Другой вариант использования может заключаться в регистрации времени выполнения каждого метода (для этого также см. Плагин pens-service-logger-stats), общих данных и предварительной и последующей обработки запросов, проверки и т. Д.

Это то, для чего нужны хуки приложений. Их можно зарегистрировать так же, как служебные перехватчики, но на объекте app через app.hooks({ before, after, error }). Отличие хуков приложений в том, что

  • before обработчики приложений всегда запускаются перед всеми обработчиками конкретных служб.
  • after и error обработчики приложений всегда запускаются после всех обработчиков конкретных служб

В следующем примере регистрируется ловушка ошибки приложения, которая регистрирует текущую ошибку, а также ловушку до и после, которая отслеживает время начала и окончания методов службы, а затем регистрирует ее (включая метод и путь службы):

Как уже упоминалось, прямо сейчас вы можете использовать приложение и обработчики ошибок в существующем приложении Feathers. Хотя он еще не включен в генератор приложений, как и многие другие функции, при внесении изменений вручную нет необходимости ждать окончательной версии Feathers Auk.

Если вы еще не пробовали FeathersJS, попробуйте его и дайте нам знать, что вы думаете, в Slack или Twitter. Мы очень дружелюбны.