一个GET请求,但被express node.js中的多个.GET函数捕获

一个GET请求,但被express node.js中的多个.GET函数捕获,node.js,express,nonblocking,url-parameters,Node.js,Express,Nonblocking,Url Parameters,客户端只发送了一个请求,但有多个.get函数正在捕获该请求 这是我的密码 const app = express() app.get('/', (req, res) => { console.log('home'); res.send('home'); }); app.get('/:var1', (req, res) => { console.log('var1'); res.send('var1'); }); app.get('/:var1/:

客户端只发送了一个请求,但有多个.get函数正在捕获该请求

这是我的密码

const app = express()

app.get('/', (req, res) => {
    console.log('home');
    res.send('home');
});

app.get('/:var1', (req, res) => {
    console.log('var1');
    res.send('var1');
});

app.get('/:var1/:var2', (req, res) => {
    console.log('var2');
    res.send('var2');
});

app.listen(4000, () => {
    console.log('listening in 4000')
});
我所期望的是

when /:
 console: home
 browser: home
when /foo:
 console: var1
 browser: var1
when /foo/bar:
 condole: var2
 browser: var2
然而,实际结果是

when /:
 console: home and var1
 browser: home
when /foo:
 console: var1 and var1
 browser: var1
when /foo/bar:
 condole: var2 and var1
 browser: var2
如果结果是由于非阻塞IO,为什么会出现两次var1? 为什么浏览器只得到一个响应?
如何使用快速路由更改结果?

上述行为是快速路由

从设计的角度来看,简单的参数更改不需要3条不同的路径

你可以和我一起去

const app = express()

app.get('/?var1=12&var2=34', (req, res) => {
    console.log('home');
     var params = req.query.var1.
    res.send('home');
});

app.listen(4000, () => {
    console.log('listening in 4000')
});

您可以在一条路线中处理所有问题

这是由于快速路线行为。对不起,我想要的是路线。。我将把它添加到问题中