当一条路线 "blocks" 另一条路线时该怎么办?
What to do when one route "blocks" another?
我正在使用 nodejs(与 sailsjs),我遇到了路由问题,情况如下:
- 我有一条路线可以处理 url
'/user/?variable'
。它链接到
显示配置文件的控制器操作,具体取决于变量
给予;如果没有找到用户,它 returns 一个 404 错误。
- 我有第二条处理
'/user/find'
的路线。它链接到一个
控制器操作意味着 AJAX 请求 returns 用户的
id 给定传递给它的变量。
但是,当我用 AJAX 请求调用 '/user/find/'
时,我得到 404 错误;我猜这是因为它仍然链接到 "show profile" 操作,并且该操作找不到名为 "find".
的用户
这种冲突在框架之间是否普遍?有办法解决这个问题吗?我试过切换我声明路由的顺序,但响应是一样的。我想如果用户使用用户名 'find' 注册也可能会引起冲突,在这种情况下,我将如何处理?还是我应该使用完全不同的路线?
我喜欢/user/find
,因为这个名字很直白
谢谢。
当您在 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
});
我正在使用 nodejs(与 sailsjs),我遇到了路由问题,情况如下:
- 我有一条路线可以处理 url
'/user/?variable'
。它链接到 显示配置文件的控制器操作,具体取决于变量 给予;如果没有找到用户,它 returns 一个 404 错误。 - 我有第二条处理
'/user/find'
的路线。它链接到一个 控制器操作意味着 AJAX 请求 returns 用户的 id 给定传递给它的变量。
但是,当我用 AJAX 请求调用 '/user/find/'
时,我得到 404 错误;我猜这是因为它仍然链接到 "show profile" 操作,并且该操作找不到名为 "find".
这种冲突在框架之间是否普遍?有办法解决这个问题吗?我试过切换我声明路由的顺序,但响应是一样的。我想如果用户使用用户名 'find' 注册也可能会引起冲突,在这种情况下,我将如何处理?还是我应该使用完全不同的路线?
我喜欢/user/find
,因为这个名字很直白
谢谢。
当您在 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
});