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官方文檔上的一個(gè)例子,1、router.use掛載了一個(gè)中間件,用于檢查請(qǐng)求頭,由于沒(méi)有指定路徑和方法,所以請(qǐng)求所有路徑和方法都會(huì)執(zhí)行它。2、我請(qǐng)求localhost:3000/的時(shí)候,沒(méi)有加x-auth請(qǐng)求頭,會(huì)輸出一個(gè)錯(cuò)誤的網(wǎng)頁(yè),加了請(qǐng)求頭,會(huì)輸出'hello, user!',這部分我可以理解。3、但在在請(qǐng)求localhost:3000/admin的時(shí)候,沒(méi)有加請(qǐng)求頭會(huì)返回401,但是為什么加了請(qǐng)示頭,會(huì)輸出 'hello, user!',一個(gè)是請(qǐng)求'/',一個(gè)是 '/admin',這兩個(gè)毫無(wú)關(guān)聯(lián)呀???4、使用 return next('router') 這個(gè)會(huì)返回到哪邊呢?
express路由層中間件
月關(guān)寶盒
2019-01-05 11:26:46