如何删除或替换特定路径的回调

时间:2018-05-15 16:50:47

标签: node.js express

我尝试用另一个回调替换/路径:

app.get('/', (req, res) => res.send('Hello World!'))
app.get('/', (req, res) => res.send('404'))

但是当我导航到/路径时,它仍会以Hello World!而不是404进行响应,这意味着回调未被替换。有没有办法做到这一点?

澄清: 我真正想要做的是在运行时删除路由,但用回复说404的东西替换回调也可以做到这一点。

1 个答案:

答案 0 :(得分:-1)

您的问题并不清楚,但看起来您的代码中存在两条路线。如果是这种情况,那么只会使用第一个。

如果您正在尝试设置某种动态路由(即在应用程序启动后完全替换路由处理程序),我不确定在Express中是否可行。根据{{​​3}}在运行时删除Express路由时,似乎在首次初始化应用程序时优化了路由,之后没有简单的方法来更改它们。

如果您需要在运行时使用不同的路径,那么执行此操作的方法是在路由回调中。例如:

app.get('/', (req, res) => {
    // test something & respond accordingly
    if (req.query.someValue === 'do this') {
        return res.send('Hello world');
    }

    // otherwise, return a 404 error
    return res.status(404).send('No way, man!');
});