我已经使用 Restify 一段时间了。我遇到了一些缺少的代码next()
我突然意识到我不确定我是否完全理解其中的原因why next()
应该在之后调用res.send()
。我明白为什么会在中间件情况下使用它,但是对于正常的路由为什么需要它?例如:
server.get('/a/:something/',function(req,res,next) {
res.send('ok');
});
vs
server.get('/b/:something/',function(req,res,next) {
res.send('ok');
return next();
});
If return next();
被排除在代码之外,它似乎不会导致错误,并且从我所看到的情况来看是有效的。
The Restify API 指南 http://mcavage.me/node-restify有这样说:
您负责调用 next() 以便运行链中的下一个处理程序。
他们所指的“链”是每个路由的处理程序链。一般来说,每个路由将由多个处理程序按特定顺序处理。链中的最后一个处理程序实际上并不需要调用 next() ——但是假设处理程序始终是最后一个处理程序是不安全的。在处理请求时,未能调用链中的所有处理程序可能会导致严重或细微的错误。
因此,作为良好的编程实践,您的处理程序应该always调用 next() [使用适当的参数]。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)