我在sails.js应用程序中有两条路径,就像这样
'POST /subscribe',
'GET /:category'
问题是/:category
路由总是为每个其他路由执行运行
答案 0 :(得分:1)
由于评论而更新。
每种类别创建不同端点的3种方法。
提前定义所有端点。
/类别/艺术
/类别/电子
/类别/ anything_else_you_want
创建一个端点/类别/:类别,用于处理网址的:类别部分以确定类别以及要采取的操作。
/类别/:类别
解析url查询字符串以获取请求的类别。
/分类
然后在您的端点执行以下操作。
var params = req.params
var category = params.category
如何从客户端(浏览器)访问上述3中的每一个
通过执行/:类别,该端点将匹配其他路由,例如www.something.com/login或www.something.com/admin...you得到了这一点。
如果一切都有道理,请告诉我。
答案 1 :(得分:1)
好的,我不是风帆用户,但我设置了一个快速项目进行测试。我找到了答案,你必须以这种方式明确地将方法设置为/:category
路线:
'get /:category': {
view: 'homepage'
},
'post /subscribe': {
view: 'sub'
}
如果您想添加另一条获取路线,请以/:category
之前的方式添加:
'get /another-route': {
view: 'someotherview'
},
'get /:category': {
view: 'homepage'
},
答案 2 :(得分:0)
我维护一个风帆应用程序,我使用这样的路线:
'GET /:userName': 'MainController.showDashboard',
或类似的东西。我必须小心这条路线,因为它匹配每条路线(每个GET都有一个/
)。例如,如果我希望联系页面位于myurl.com/contact
,我必须在 /:userName
通配符路由之前声明路由:
'GET /contact': 'MainController.showContactPage',
'GET /:userName': 'MainController.showDashboard',
如果我反过来放置它们,那么url myurl.com/contact
将被userName路由拦截,并且路由到showDashboard
方法,其中'contact'
被解释为userName。通过上述排序,可以正确检测/contact
并将其发送到正确的控制器。
底线是检查路由的匹配顺序与它们在routes.js
文件中出现的顺序相同(无论您使用什么形式的声明),所以如果你有一个全能(如{{{ 1}}),你应该把它放在最后。