nodejs的中间件

来源:互联网 发布:时时彩炫彩软件骗局 编辑:程序博客网 时间:2024/06/05 00:28

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

//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();就不宜发送响应到客户端了,因为你发送了响应,之后的中间件或者路由器还会继续匹配执行,但是它们发送的任何响应都会被忽略。

0 0
原创粉丝点击