中间件函数是可以访问请求对象 ( req)、响应对象( res) 以及应用程序请求-响应周期中的下一个中间件函数的函数。下一个中间件函数通常由名为 的变量表示next。
功能
- 执行任意代码。
- 更改请求和响应对象。
- 结束请求-响应周期。
- 调用堆栈中的下一个中间件函数。
如果当前的中间件函数没有结束请求-响应周期,则必须调用next()将控制权传递给下一个中间件函数。否则,请求将被挂起。
中间件种类
1.应用层中间件
2.路由器级中间件
3.错误处理中间件
4.内置中间件
5.第三方中间件
中间件的目的都相同,都是在请求之前做一些事情。通过next转往下一个中间件,其中,路由级中间件调用next('router') 将控制权从路由器实例传回,此时跳过路由器中间件的其余功能。错误处理中间件必须四个参数,哪怕你那些参数你用不到。express.static、express.json和express.urlencoded为内置中间件。
中间件汇总
地址:https://www.expressjs.com.cn/resources/middleware.html
常见问题
为什么我在子路由中写的中间件会触发两次打印
当子路由导出之后,在app.js中注册时,是以默认的斜杠注册,便会发生;因为当发起请求的时候,他会先到app.js中查询,然后再到子路由中查询。
类似这种注册方式:app.use('/', indexRouter);
因此解决方案是给加前缀
以上便是中间件相关,实不相瞒,想要您一个赞~