我正在尝试在Sails.js 0.9x中创建REST API
我有一个如下控制器:
UsersController = {
list: function(req, res){
var users [{username: "max"}, {username:'alison'}];
res.send(users);
},
single: function(req, res){
var user = {username: 'max'};
res.send(user);
}
};
如何使用HTTP方法和路由访问URL而不指定操作名称?
例如
HTTP GET 到 mysite.com/users / 会调用列表操作
HTTP GET 到 mysite.com/users/1 会调用单一操作
目前它仅在我调用时有效(不我想要的东西)
HTTP GET 到 mysite.com/users/list 会调用列表操作
HTTP GET 至 mysite.com/users/single/1 将调用单一操作
答案 0 :(得分:4)
创建一个index
操作,重定向到其他操作。
UsersController = {
index: function(req, res) {
if(req.param('idOrWhateverYouHaveDefined')) {
this.single(req, res);
}else {
this.list(req, res);
}
},
list: function (req, res) {
var users[{
username: "max"
}, {
username: 'alison'
}];
res.send(users);
},
single: function (req, res) {
var user = {
username: 'max'
};
res.send(user);
}
};
答案 1 :(得分:3)
我认为这可能是一个更好的解决方案
创建/编辑config / route.js并明确定义路线及其相关操作 Link from the documentation
module.exports.routes = {
// Standard RESTful routing
// If no id is given, an array of all users will be returned
'get /user/:id?': {
controller : 'user',
action : 'find'
}
'post /user': {
controller : 'user',
action : 'create'
}
'put /user/:id': {
controller : 'user',
action : 'update'
}
'delete /user/:id': {
controller : 'user',
action : 'destroy'
},
// Override the default index action (find) by declaring an "index" method in your controller
'get /user': {
controller : 'user',
action : 'index'
}
*/
};