2015-05-29 1 views
2

Как вы обеспечиваете, чтобы промежуточное программное обеспечение не применялось дважды?Как обеспечить, чтобы промежуточное программное обеспечение не было дважды завернуто?

Мое приложение использует bidi, и у меня есть мои маршруты и обработчики. Таким образом, у моего последнего обработчика кольца есть некоторые средние (например, wrap-params и wrap-session), а некоторые из моих обработчиков имеют собственные пользовательские посредники. Я могу вручную просмотреть конструктор моего главного обработчика и файл моих обработчиков, но я бы предпочел не полагаться на ручную бдительность.

Есть ли дизайн, который помогает лучше управлять средними? Или какая-то библиотека?

Моя структура выглядит следующим образом:

1. routes         2. handlers 
     \         /
     \         /
    3. (bidi.ring/make-handler routes handlers) 

Можно завернуть что-то в 2, а затем снова в 3.

3 Фактически component и make-handler вызывается в его start. handler & routes зависит от зависимостей компонентов 3. Я рассмотрел добавление другого протокола к 1 & 2 с помощью метода wrap-middlewares, но порядок посредников значителен. Например (buddy-auth's) wrap-authentication зависит от wrap-session & wrap-params.

ответ

1

для промежуточного слоя вы контролируете это довольно просто, вы можете просто каждый промежуточное программное добавить ключ с его именем на запрос и залог (или Noop, если вы чувствуете себя снисходительным), если этот ключ в любом запросе он recieves , для промежуточного программного обеспечения, которое вы не контролируете, я полагаю, что он застрял в том, что смотрел на код и думал очень тяжело, или, как вы описали его, «ручная бдительность».