Встроенная функция промежуточного программного обеспечения - PullRequest
0 голосов
/ 09 июля 2020

Встроенные функции промежуточного программного обеспечения, такие как app.use(express.json()) и app.get('/', () => res.send('Hello')).

Я слышал, что они также могут называться функциями промежуточного программного обеспечения, я не знаю, является ли «Встроенная функция промежуточного программного обеспечения» лучшим термином для их вызова . Завершают ли они цикл или автоматически вызывают метод next(), чтобы передать управление следующей функции промежуточного программного обеспечения?

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Ни app.get, ни app.use не являются функциями промежуточного программного обеспечения. Функции промежуточного программного обеспечения - это те функции, которые вы передаете как обратные вызовы в app.get, app.use, ...

В express функции промежуточного программного обеспечения имеют предопределенную подпись, либо

function(req: express.Request, res: express.Response, next: express.NextFunction) 

или

function(err: Error, req: express.Request, res: express.Response, next: express.NextFunction) 

в зависимости от того, является ли это промежуточное ПО нормальным или ошибочным.

Любая функция, которая работает с входящим запросом и имеет указанную выше подпись, может называться функцией промежуточного ПО.

Есть только два возможных варианта, которые вы можете сделать в функции промежуточного программного обеспечения: либо вы отправляете ответ запрашивающей стороне, либо вызываете функцию next для передачи запроса следующему промежуточному программному обеспечению (или забываете сделать что-либо из этого и интересно, почему клиент кажется застрявшим).

Так что да, такие вещи, как парсеры тела, регистраторы, обработчики сеансов, ... вызывайте функцию next, иначе ваши собственные обработчики запросов вообще не будут выполняться ( предполагая, что им предшествуют упомянутые функции промежуточного программного обеспечения).

Обратные вызовы, переданные в app.get, и аналогичные методы также являются функциями промежуточного программного обеспечения и yo Вы можете вызвать в них next и продолжить работу с другим обработчиком. Пример

// these are global middleware functions - they process every request
app.use(middleware1)
app.use(middleware2)
app.use(middleware3)

// functions middleware4 and middleware5 are executed only when GET / 
// request is received
app.get('/', middleware4, middleware5, (req, res) => {
    return res.send({})
})
0 голосов
/ 09 июля 2020

они автоматически вызывают метод next () .id выполняются успешно, иначе они выдадут ошибку

Функции промежуточного программного обеспечения - это функции, которые имеют доступ к объекту запроса (req), объекту ответа (res) и следующая функция промежуточного программного обеспечения в цикле запроса-ответа приложения. Следующая функция промежуточного программного обеспечения обычно обозначается переменной с именем next. Как следует из названия, он входит в середину чего-то, и это цикл запроса и ответа. Промежуточное ПО имеет доступ к объекту запроса и ответа. ПО промежуточного слоя имеет доступ к следующей функции жизненного цикла запрос-ответ. Изображение для пост-функций промежуточного ПО может выполнять следующие задачи: Выполнить любой код . Внесите изменения в объекты запроса и ответа. Завершите цикл запрос-ответ. Вызов следующего промежуточного программного обеспечения в стеке. Если текущая функция промежуточного программного обеспечения не завершает цикл запрос-ответ, она должна вызвать next (), чтобы передать управление следующей функции промежуточного программного обеспечения. В противном случае запрос останется зависшим.

...