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)求頭,由于沒有指定路徑和方法,所以請(qǐng)求所有路徑和方法都會(huì)執(zhí)行它。2、我請(qǐng)求localhost:3000/的時(shí)候,沒有加x-auth請(qǐng)求頭,會(huì)輸出一個(gè)錯(cuò)誤的網(wǎng)頁,加了請(qǐng)求頭,會(huì)輸出'hello, user!',這部分我可以理解。3、但在在請(qǐng)求localhost:3000/admin的時(shí)候,沒有加請(qǐng)求頭會(huì)返回401,但是為什么加了請(qǐng)示頭,會(huì)輸出 'hello, user!',一個(gè)是請(qǐng)求'/',一個(gè)是 '/admin',這兩個(gè)毫無關(guān)聯(lián)呀???4、使用 return next('router') 這個(gè)會(huì)返回到哪邊呢?
express路由層中間件
人到中年有點(diǎn)甜
2019-01-05 09:29:05