我正在使用连接中间件,并具有如下所示的多个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('');
没有帮助。
1条答案
按热度按时间zujrkrfu1#
这里的问题是,这些实际上可能是不同的请求触发了您的中间件。
为了检查此:
console.log(req.url)
。最烦人的问题是favicon.ico
,当你不知道浏览器实际上一直在请求它时,它会让你头疼。如果您正在开发RESTful API或任何其他不需要favicon.ico的类似应用程序,那么请首先使用此中间件。
这将响应200和非常长的缓存寿命,这样浏览器就不会再调用它了。
同样,只是为了澄清-你确定你需要使用
.use
而不是.get
或任何其他路由解决方案?