乐趣区

关于npm:Express框架学习二

Express 中间件

2.1 什么是中间件

中间件就是一堆办法,能够接管客户端发来的申请、能够对申请做出响应,也能够将申请持续交给下一个中间件持续解决。

中间件次要由两局部形成,中间件办法以及申请处理函数。
中间件办法由 Express 提供,负责拦挡申请,申请处理函数由开发人员提供,负责解决申请。

 app.get('申请门路', '处理函数')   // 接管并解决 get 申请
 app.post('申请门路', '处理函数')  // 接管并解决 post 申请

能够针对同一个申请设置多个中间件,对同一个申请进行屡次解决。
默认状况下,申请从上到下顺次匹配中间件,一旦匹配胜利,终止匹配。
能够调用 next 办法将申请的控制权交给下一个中间件,直到遇到完结申请的中间件。

 app.get('/request', (req, res, next) => {
     req.name = "张三";
     next();});
 app.get('/request', (req, res) => {res.send(req.name);
 });
2.2 app.use 中间件用法

app.use 匹配所有的申请形式,能够间接传入申请处理函数,代表接管所有的申请。

 app.use((req, res, next) => {console.log(req.url);
     next();});

app.use 第一个参数也能够传入申请地址,代表不论什么申请形式,只有是这个申请地址就接管这个申请。

 app.use('/admin', (req, res, next) => {console.log(req.url);
     next();});
2.3 中间件利用
  1. 路由爱护,客户端在拜访须要登录的页面时,能够先应用中间件判断用户登录状态,用户如果未登录,则拦挡申请,间接响应,禁止用户进入须要登录的页面。
  2. 网站保护布告,在所有路由的最下面定义接管所有申请的中间件,间接为客户端做出响应,网站正在保护中。
  3. 自定义 404 页面
2.4 错误处理中间件

在程序执行的过程中,不可避免的会呈现一些无奈意料的谬误,比方文件读取失败,数据库连贯失败。
错误处理中间件是一个集中处理错误的中央。

 app.use((err, req, res, next) => {res.status(500).send('服务器产生未知谬误');
 })

当程序呈现谬误时,调用 next() 办法,并且将错误信息通过参数的模式传递给 next() 办法,即可触发错误处理中间件。

 app.get("/", (req, res, next) => {fs.readFile("/file-does-not-exist", (err, data) => {if (err) {next(err);
         }
     });
});
2.5 捕捉谬误

在 node.js 中,异步 API 的错误信息都是通过回调函数获取的,反对 Promise 对象的异步 API 产生谬误能够通过 catch 办法捕捉。
异步函数执行如果产生谬误要如何捕捉谬误呢?

try catch 能够捕捉异步函数以及其余同步代码在执行过程中产生的谬误,然而不能其余类型的 API 产生的谬误。

 app.get("/", async (req, res, next) => {
     try {await User.find({name: '张三'})
     }catch(ex) {next(ex);
     }
 });
退出移动版