express中间件

中间件

在node执行的过程中,在请求和应答的中间会有很多中间处理不同东西的组件,这样的组件叫做中间件。中间件的执行过程是:请求发送-第一个中间件接收-第一个中间件应答-第一个中间件请求-第二个中间件接收-第二个中间件应答-第二个中间件请求-最终应答。

具体使用:

app.use((req, res, next) => {
  req.requestTime = new Date().toISOString();
  next();
});
  1. 必须执行next函数,不然会在中间件中出不来
  2. 中间件是线性执行的,当任务在它前面就已经结束,则不会执行中间件中的代码

第三方中间件

  1. npm i morgan

  2. 使用

    const morgan = require('morgan');
    app.use(morgan('dev'));
    

    返回类似这样的东西

    GET /api/v1/users 404 4.909 ms - 151
    

param 中间件

param中间件只在包含某些参数的时候运行,在有id的时候运行

router.param('id', (req, res, next, val) => {
  console.log(`Tour id id : ${val}`);
  next();
});

链式中间件

在某个请求的前面写上检查函数,那么在该请求的时候就会根据这个中间件检查

exports.checkBody = (req, res, next) => {
  if (!req.body.name || !req.body.price) {
    return res.status(400).json({
      status: 'fail',
      message: 'Missing name or price',
    });
  }
  next();
};
router
  .route('/')
  .get(tourController.getAllTours)
  .post(tourController.checkBody, tourController.createTour);
posted @ 2022-06-22 01:10  kihyun  阅读(47)  评论(0编辑  收藏  举报