如何编写以路径参数为目标的路由
How to write a route that targets an action from a path paramater
如果我有多个 url,如“/some/url/path/foo/bar1”、“/some/url/path/foo/bar2”、“/some/url/path/foo/bar3”等。如何编写一个路由将 url 定向到foo 控制器和 bar1、bar2、bar3 等的动作
EG。 (只有这个不行。)
'/some/url/path/foo/:bar' : 'foo.:bar'
有多种方法可以做到这一点。我可能会建议您不需要控制器中的不同操作,而只需在响应 url 参数(例如 bar
)的单个操作中有不同的情况。这将更符合惯例。
但是,您可以通过以下方式完成您想要的。
创建你的路线
'/some/url/path/foo/:action': {
controller: 'FooController',
action: 'getAction'
}
然后在该控制器中创建一个 getAction
方法。此方法现在可以使用 req.param.action
变量来查找执行相应的操作。
FooController.getAction = function(req,res,next){
return sails.controllers.foo[req.param.action](req,res,next)
}
如果我有多个 url,如“/some/url/path/foo/bar1”、“/some/url/path/foo/bar2”、“/some/url/path/foo/bar3”等。如何编写一个路由将 url 定向到foo 控制器和 bar1、bar2、bar3 等的动作
EG。 (只有这个不行。)
'/some/url/path/foo/:bar' : 'foo.:bar'
有多种方法可以做到这一点。我可能会建议您不需要控制器中的不同操作,而只需在响应 url 参数(例如 bar
)的单个操作中有不同的情况。这将更符合惯例。
但是,您可以通过以下方式完成您想要的。
创建你的路线
'/some/url/path/foo/:action': {
controller: 'FooController',
action: 'getAction'
}
然后在该控制器中创建一个 getAction
方法。此方法现在可以使用 req.param.action
变量来查找执行相应的操作。
FooController.getAction = function(req,res,next){
return sails.controllers.foo[req.param.action](req,res,next)
}