当一条路线“阻挡”另一条路线时该怎么办?

时间:2015-03-10 23:00:42

标签: node.js express routes sails.js

我正在使用nodejs(使用sailsjs),我遇到了路由问题,以下是这种情况:

  • 我有一条处理网址'/user/?variable'的路线。它链接到 控制器操作,显示配置文件,具体取决于变量 给定;如果找不到用户,则会返回 404错误
  • 我有第二条路线处理'/user/find'。它与a相关联 控制器动作用于返回用户的AJAX请求 id给出传递给它的变量。

但是,当我使用AJAX请求调用'/user/find/'时,我收到 404错误;我想这是因为它仍然链接到“show profile”动作,并且动作找不到名为“find”的用户。

这种冲突在框架中是否常见?有办法解决这个问题吗?我已经尝试切换声明路由的顺序,但响应是一样的。我想如果用户注册用户名'find',它可能会引起冲突,在这种情况下,我该如何处理?或者我应该使用完全不同的路线?

我喜欢/user/find,因为这个名字很简单。

谢谢。

1 个答案:

答案 0 :(得分:1)

当您在app.js或您提交订单的任何文件中声明路线时,

app.get("/user/find", function (request, response) {
    //do something
});

app.get("/user/:variable", function (request, response) {
    //do something
});

在上面的示例中,/user/find优先于/user/:variable,因为它是先声明的。如果你需要这样做我建议玩声明的顺序。如果你把它切换到以下它应该工作。

app.get("/user/:variable", function (request, response) {
    //do something
});

app.get("/user/find", function (request, response) {
    //do something
});