nodejs的中间件

一直不太清楚中间件,找了本书翻了翻有了点了解~

//app.use(function(req,res){
//  console.log('如果执行我,所有的http请求都会被我中断,因为我没有next');
//})
app.use(function(req,res,next){
    console.log('');
    res.send('我执行后,下面的请求还会继续');
    next();
});
app.get('/add',function(req,res){
    console.log('get add');
    res.send('我输出的响应将会被忽略,因为我之前的中间件已经有发送过响应');
})

所谓中间件其实也是一个路由,是一个可以处理所有http请求的路由

1.路由处理器app.get/app.post这些一般被统称为app.VERB,可以被当作是只处理特定http谓词(GET,POST等)的中间件,而use中间件可以当作可以处理全部http请求的路由处理器。

2.路由处理器第一个参数必须是路径,如果要让一个路由匹配所有的路径,可以用 /* .
中间件也可以用路径作为第一个参数,而它是可选的,如果忽略了这个参数,它就会匹配所有的路径。

3.路由处理器和中间件参数都有回调,回调有2个参数时,是(req,res);回调有3个参数时,是(req,res,next);有4个参数时,是(err,req,res,next);

4.next。如果在中间件回调中调用了next(); 程序就会继续匹配下一个合适的路由处理器,如果你没有在中间件调用next()的话,中间件在处理完之后就会被终止,不会继续匹配相应的路由处理器,这时应该要发送响应到客户端,否则客户端会被挂起最终超时。

5.如果在中间件回调中调用了next();就不宜发送响应到客户端了,因为你发送了响应,之后的中间件或者路由器还会继续匹配执行,但是它们发送的任何响应都会被忽略。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值