var express = require('express')var app = express()var router = express.Router()
router.use(function (req, res, next) { if (!req.headers['x-auth']) return next('router')
next()
})
router.get('/', function (req, res) {
res.send('hello, user!')
})
app.use('/admin', router, function (req, res) {
res.send('401')
})
app.use('/', router)
app.listen(3000)这是express官方文档上的一个例子,1、router.use挂载了一个中间件,用于检查请求头,由于没有指定路径和方法,所以请求所有路径和方法都会执行它。2、我请求localhost:3000/的时候,没有加x-auth请求头,会输出一个错误的网页,加了请求头,会输出'hello, user!',这部分我可以理解。3、但在在请求localhost:3000/admin的时候,没有加请求头会返回401,但是为什么加了请示头,会输出 'hello, user!',一个是请求'/',一个是 '/admin',这两个毫无关联呀???4、使用 return next('router') 这个会返回到哪边呢?
1 回答
呼如林
TA贡献1798条经验 获得超3个赞
没有 next('router')
的写法, 是 next('route')
. 作用是跳过当前匹配路由的回调. 在你的例子中就是跳过 '/admin' 的路由回调, 寻找下一个匹配的路由, 也就是 '/'.
- 1 回答
- 0 关注
- 520 浏览
添加回答
举报
0/150
提交
取消