【问题标题】:one GET request but caught by multiple .get functions in express, node.js一个 GET 请求,但被 express、node.js 中的多个 .get 函数捕获
【发布时间】:2019-10-08 09:25:00
【问题描述】:

客户端只发送了一个请求,但多个 .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

如果结果是因为 NonBlocking-IO,为什么会出现两次 var1? 为什么浏览器只得到一个响应? 如何使用快速路由更改结果?

【问题讨论】:

  • 这是由于 Express 路由行为。

标签: node.js express nonblocking url-parameters


【解决方案1】:

上述行为是快速路由。

从设计的角度来看,您不需要 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')
});

您可以在一条路线中处理所有事情

【讨论】:

  • 对不起,我想要的是路由..我会把它添加到问题中
猜你喜欢
  • 2012-03-23
  • 2021-08-04
  • 1970-01-01
  • 2021-02-11
  • 1970-01-01
  • 2013-12-05
  • 1970-01-01
相关资源
最近更新 更多