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掛載了一個中間件,用于檢查請求頭,由于沒有指定路徑和方法,所以請求所有路徑和方法都會執(zhí)行它。2、我請求localhost:3000/的時候,沒有加x-auth請求頭,會輸出一個錯誤的網(wǎng)頁,加了請求頭,會輸出'hello, user!',這部分我可以理解。3、但在在請求localhost:3000/admin的時候,沒有加請求頭會返回401,但是為什么加了請示頭,會輸出 'hello, user!',一個是請求'/',一個是 '/admin',這兩個毫無關(guān)聯(lián)呀???4、使用 return next('router') 這個會返回到哪邊呢?
1 回答

呼如林
TA貢獻1798條經(jīng)驗 獲得超3個贊
沒有 next('router')
的寫法, 是 next('route')
. 作用是跳過當前匹配路由的回調(diào). 在你的例子中就是跳過 '/admin' 的路由回調(diào), 尋找下一個匹配的路由, 也就是 '/'.
- 1 回答
- 0 關(guān)注
- 534 瀏覽
添加回答
舉報
0/150
提交
取消