1.2.1 app.use中间件用法
-
app.use匹配所有的请求方法,可以直接传入请求处理函数,代表接收所有的请求
-
app.use 第一个参数可以省略,省略时表示匹配所有的请求,当传入请求地址时,代表无论什么请求方式,只有是这个地址就接收这个请求
-
// 接收所有请求的中间件 app.use((req, res, next) => { console.log('执行了app.use中间件'); next() }) // 当客户端访问 / index请求的时候会执行当前中间件 app.use('/index', (req, res, next) => { console.log('执行了app.use/index中间件'); next() })
1.2.2 中间件应用
-
路由保护,客户端在访问需要登录的界面时,可以先使用中间件判断用户登录状态,用户如果未登录,则拦截请求,直接响应,禁止用户进入需要登录的界面
-
app.use('/admin', (req, res, next) => { let isLogin = true if (isLogin) { next() } else { res.send('未登录,请登录') } }) app.get('/admin', (req, res) => { res.send('用户已登录,可以访问当前页面') })
-
-
网站维护公告,在所有路由的最上面定义接收所有请求的中间件,直接为客户端做出响应,网站正在维护中
-
自定义404页面
1.2.3 错误处理中间件
-
在程序执行的过程中,不可避免的会出现一些无法预料的错误,比如文件读取失败,数据库连接失败。
-
错误处理中间件是一个集中处理错误的地方
app.use((err,req,res,next)=>{ res.ststus(500).send('服务器发生未知错误') })
-
当程序出现错误时,调用next()方法
app.get("/", (req,res,next)=>{ fs.readFile("/file", (err,data)=>{ if(err){ next(err); } }) })
1.2.4 捕获错误
- 可以使用try catch 捕获异步函数以及其他同步代码在执行过程中发生的错误