中间件函数 myLogger

中英双语

这是一个名为 "myLogger" 的中间件函数的简单示例。此函数仅在对应用程序的请求通过它时打印 "LOGGED"。中间件函数被分配给一个名为 myLogger 的变量。

const myLogger = function (req, res, next) {
  console.log('LOGGED')
  next()
}

注意上面对 next() 的调用。调用此函数会调用应用程序中的下一个中间件函数。next() 函数不是 Node.js 或 Express API 的一部分,而是传递给中间件函数的第三个参数。next() 函数可以命名为任何名称,但按照惯例,它始终命名为 "next"。为避免混淆,请始终使用此约定。

要加载中间件函数,调用 app.use(),指定中间件函数。例如,以下代码在路由到根路径 (/) 之前加载 myLogger 中间件函数。

const express = require('express')
const app = express()

const myLogger = function (req, res, next) {
  console.log('LOGGED')
  next()
}

app.use(myLogger)

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(3000)

应用程序每次收到请求时,都会将消息 "LOGGED" 打印到终端。

中间件加载的顺序很重要:首先加载的中间件函数也会先执行。

如果 myLogger 在路由到根路径之后加载,则请求永远不会到达它并且应用程序不会打印 "LOGGED",因为根路径的路由处理程序终止了请求-响应循环。

中间件函数 myLogger 简单地打印一条消息,然后通过调用 next() 函数将请求传递给堆栈中的下一个中间件函数。