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

来源:10-5 express中间件

THEEND0123

2020-11-10

老师您好,以下问题我也遇到了,我看有很多人也提问了该问题。
您看应该是get、post这些方法,是不能直接匹配父路由的吧?只有app.use才行!

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才会执行,请问这里是什么原因呢?
目前发现用 get 方法是要写准确的路径才可以匹配到,如果匹配 /api/get-cookie,路由不能写 /api 要写成 /api*,用上了通配符 *。use 方法没有这个问题。

写回答

2回答

THEEND0123

提问者

2020-11-12

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

0
0

双越

2020-11-11

这是路由匹配的问题。

一般情况下,日常项目开发中,使用精准匹配或者动态参数(如 /blogs/:id) ,就可以完全满足了。

0
0

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

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

4051 学习 · 2006 问题

查看课程