中间件函数是 Express 框架的一个重要特性,它是在路由回调函数之前执行的一个函数,用于在请求和响应之间执行一些公共的操作,例如记录请求日志、验证用户身份、设置响应头等。
中间件函数有两种写法:函数式中间件和路由器级中间件。
1.函数式中间件:
函数式中间件是最常用的一种中间件写法,它是一个普通的函数,接收三个参数 request
、response
和 next
,其中 request
和 response
分别表示客户端发起的请求和服务端返回的响应,next
表示执行下一个中间件函数或路由回调函数的函数。函数式中间件的基本写法如下:
function middleware(request, response, next) {
// 中间件函数的实现
// ...
next(); // 执行下一个中间件函数或路由回调函数
}
2.路由器级中间件:
const router = express.Router();
router.use(function(request, response, next) {
// 中间件函数的实现
// ...
next(); // 执行下一个中间件函数或路由回调函数
});
路由器级中间件是一种特殊的中间件,它是在路由器级别上定义的中间件,用于处理路由器级别的请求。路由器级中间件的写法如下:
路由器级中间件可以在路由器级别上定义,也可以在应用级别上定义。在路由器级别上定义的中间件只会对该路由器的请求生效,而在应用级别上定义的中间件会对所有请求生效。
中间件函数的原理是通过将请求和响应对象传递给下一个中间件函数或路由回调函数来实现的,每个中间件函数都可以在请求和响应之间执行一些操作,例如记录请求日志、验证用户身份、设置响应头等。中间件函数的执行顺序是按照它们在代码中定义的顺序依次执行的,如果中间件函数调用了 next()
函数,请求就会继续向下传递,执行下一个中间件函数或路由回调函数,如果没有更多的中间件函数或路由回调函数,请求就会结束并返回响应给客户端。