Ни 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({})
})