Sails 关闭自动路由 Automatic Routes 功能。
Sails 关闭自动路由 Automatic Routes 功能。
Sails 中的路由两种:Custom Routes 和 Automatic Routes,自定义路由和自动路由。详见文档:
Sails Routes
自定义路由就是我们在 routes.js 中为指定的 url 分配处理的 Action 如:
'post /purchase/pay':{
controller:'PurchaseController',
action: 'pay'
}
自动路由则是,我们在 sails 中添加了 PurchaseController 并添加了 pay 方法后, 如:
module.exports = {
pay: function () {
doSomeThink()
}
}
可以直接使用 /purchase/pay 访问,Post 和 Get 方式均可
现在有个问题就是,我们希望只有 Post 请求才被处理,但是 Sails 的路由机制是,先在自定义路由 routes.js 中匹配,没有结果则在自动路由中匹配。
所以我们使用 get /purchase/pay 方式请求的话,虽然该请求被自定义路由的 Post 过滤掉,但是请求还是是会被自动路由处理的。这算是 Sails 的缺陷,还不够智能。strong text
要实现我们的目的,我们需要关闭自动路由功能。 sails 提供了此项配置,在 PurchaseController 添加以下配置:
module.exports = purchase = {
_config: {
actions: false, //关闭自动路由
shortcuts: false,
rest: false
},
buy: function () {
doSomeThink()
}
}
这样就行啦,关于该配置的详细信息见文档:sails-config-blueprint
还可以顺便关闭 Rest 接口功能。
Stackoverflow 上有人问了类似的问题,也可以参考下:
http://stackoverflow.com/questions/26921889/disabling-default-sails-js-routes