Node.js中端点与明确应用程序之间的冲突

时间:2016-04-25 17:16:07

标签: javascript node.js express

首先,我已经搜索了这个问题的解决方案,但我没有找到任何东西。对不起,如果它是重复的。

我在express + node.js app中有两个端点,如下所示:

// Gets a tweet by unique id
app.get('/tweets:id', function(req, res, next) {
    // Response management
});

// Gets mentions of user unique id
app.get('/tweets/mentions', function(req, res, next) {
    // Response management
});

问题是请求“/ tweets / mentions”的GET申请首先由“/ tweets /:id”以及稍后由参加“/ tweets / mentions”,发生冲突。

我试图更改端点的声明顺序,但两个端点始终都会有请求。

此外,我尝试了类似“/ tweets :: mentions”的内容,但我需要通过“/ tweets / mentions”访问端点,我想在那里是一种可能的方式。

我该如何解决这个冲突? 感谢。

3 个答案:

答案 0 :(得分:0)

您是否在其中一个处理程序中使用next()

next()将控制传递给下一个匹配路线,因此在您的示例中,如果其中一个被调用并且在其中,则调用next(),另一个将被调用。

如果您有多个基本路径,我总是建议使用“路由器”,因为它可以帮助您保持整洁。

答案 1 :(得分:0)

您可以通过ID"检查"推文中req.params.id的值来解决冲突。处理程序。

答案 2 :(得分:0)

对于具有附加参数的路由,建议不要使用与其他路由相同的基本路径。

可能对你有用的东西:

app.get('/tweets/users/:id', function(req, res, next) {
    // Response management
});

// Gets mentions of user unique id
app.get('/tweets/mentions', function(req, res, next) {
    // Response management
});