首先,我已经搜索了这个问题的解决方案,但我没有找到任何东西。对不起,如果它是重复的。
我在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”访问端点,我想在那里是一种可能的方式。
我该如何解决这个冲突? 感谢。
答案 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
});