为了账号安全,请及时绑定邮箱和手机立即绑定

express路由层中间件

express路由层中间件

人到中年有点甜 2019-01-05 09:29:05
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' 的路由回调, 寻找下一个匹配的路由, 也就是 '/'.

查看完整回答
反对 回复 2019-01-05
  • 1 回答
  • 0 关注
  • 520 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信