如果请求已被处理,则阻止执行下一个路由器
Prevent executing next router if the request already handled
我使用的是连接中间件,有多个router
功能,如下面的
var server = connect()
.use(connect.cookieParser("secret"))
.use(connect.session({secret: 'keyboard cat',cookie: { maxAge: 60000 }}))
.use('/somepath', connect.static(__dirname + '/somepath'))
.use('/_someapi', function (req, res) {
// do something
})
.use(function (req, res) { // default case router
// do something
})
.listen(8080)
我的问题是,即使我请求/_someapi
,在执行其函数后,也会调用下一个router
。我想知道我该如何预防它?我的意思是,如果请求已经被处理,那么下一个路由器就不应该尝试为其服务
从函数返回false
和res.end('');
没有帮助。
这里的问题是,这些可能实际上是触发中间件的不同请求。
为了对此进行检查:console.log(req.url)
。最烦人的问题是favicon.ico
,当你不知道浏览器实际上一直在请求它时,它会让你头疼。
如果您正在开发RESTful API或任何其他不需要favicon.ico的类似应用程序,那么首先使用这个中间件。
app.use(function(req, res, next) {
if (req.url != '/favicon.ico') {
return next();
} else {
res.status(200);
res.header('Content-Type', 'image/x-icon');
res.header('Cache-Control', 'max-age=4294880896');
res.end();
}
});
这将响应200和非常长的缓存寿命,这样浏览器就不会再调用它了。
同样,只是为了澄清一下——你确定你需要使用.use
而不是.get
或任何其他路由解决方案吗?
相关文章:
- 滚动到容器中的下一个元素-几乎到了
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 与 promise 一起使用时,异步瀑布不执行下一个回调方法
- JavaScript循环等待一些函数返回,然后执行下一个循环
- 插入 html 后执行下一个 js 命令
- 在执行下一个方法之前未完成(javascript jquery google maps v3 api)
- 在执行上一个的处理程序之前检查下一个事件以隐藏自动完成
- 如果请求已被处理,则阻止执行下一个路由器
- 在进入下一个循环迭代之前执行setTImeout操作
- 需要函数等待事件处理程序完成后再执行下一个函数
- Ajax要等到Api完成后才执行下一个函数
- 如何仅在前一个单击完成时执行下一个单击
- 在node.js中,我们能否在执行下一个语句之前强制函数调用完成并返回?
- 等待函数完成后再继续执行$中的下一个循环.每个函数
- 等待Google Earth完成加载,然后在matlab中执行下一个命令
- 使用jQuery执行发布请求并显示下一个页面
- 在执行下一个 AJAX 之前执行 Ajax 内部条件
- JS按顺序执行函数,同时将下一个函数作为参数传递
- 如何在Jquery中等待函数(没有回调)在执行下一个语句之前运行
- 链式jQuery.then() -每个下一个只在前一个解析完成后执行