Какова лучшая практика для регистрации Express Middelware? - PullRequest
0 голосов
/ 18 сентября 2018

В настоящее время я нахожусь в ситуации, когда мне нужно создать небольшой пакет npm, который поставляет экспресс-программное обеспечение промежуточного уровня.Цель состоит в том, чтобы это промежуточное программное обеспечение регистрировало конечную точку и доставляло некоторые данные клиенту.Обычно я просто пишу свое промежуточное программное обеспечение, а потребитель затем использует его следующим образом:

expressApp.use('/mypath', myMiddelware)

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

Мое промежуточное программное обеспечение

const myMiddelware = function(res, req, next){
  if(req.path === '/mypath'){
    res.send('some data')
  }
}

При таком подходе пользователь затем использует промежуточное программное обеспечение следующим образом:

expressApp.use(myMiddelware)

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

У кого-нибудь есть хорошее решение этой проблемы?

1 Ответ

0 голосов
/ 18 сентября 2018

Если ваша функция должна обрабатывать запрос только по одному пути, то это на самом деле не промежуточное ПО.Это конкретный обработчик запросов.Просто используйте это:

app.get('/mypath', myRequestHandler)

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

ЕслиВы также хотите охватить другие глаголы http, вы можете указать их отдельно или использовать app.all().

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

Ваше промежуточное ПО на самом деле не является промежуточным.Это обработчик запросов.Так что не прикрепляйте его как промежуточное ПО.Присоедините его как обработчик запроса.Затем он будет вызываться ТОЛЬКО в том случае, если путь соответствует именно тому, что вы хотите, чтобы он совпадал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...