关于中间件app.get('/api')不执行的问题

来源:10-5 express中间件

frankin329

2019-04-29

app.use('/api',(req,res,next)=>{
    console.log('处理api路由')
    next()
})


app.get('/api',(req,res,next)=>{
    console.log('get /api路由')
    next()
})

老师你在课程中提到,当我们访问http://localhost:3000/api/abc发出GET请求,app.use(’/api’)会执行,而app.get(’/api’)也会执行,但是实际上app.get(’/api’)不执行,只有在访问http://localhost:3000/api才会执行,请问这里是什么原因呢

写回答

2回答

双越

2019-04-29

之前有同学提过这个问题,有可能是我某个地方忽略了导致了这个 bug ,我回头查一下。

这里你先不用纠结太多,本来到了源码层面就是了解一下原理,你继续往下看就行。

0
6
熊猫MT
回复
双越
app.get需要匹配方法(get)和path,路径必须是精确匹配。 app.use中间件的路径匹配规则是包含。 两个的path匹配规则好像是不一样的。老师我说的对吗?我是不是棒棒哒 proto.use: var layer = new Layer(path, { sensitive: this.caseSensitive, strict: false, end: false }, fn); proto.route: var layer = new Layer(path, { sensitive: this.caseSensitive, strict: this.strict, end: true }, route.dispatch.bind(route));
2020-11-26
共6条回复

THEEND0123

2020-11-12

小白想问一下有没有大神有答案啊?

0
0

Node.js+Express+Koa2+Nest.js 开发服务端

从入门到实战,一站式掌握 Node.js+Express+Koa2

4051 学习 · 2006 问题

查看课程