2

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 にアクセスするにはどうすればよいですか?

例えば

mysite.com/users/へのHTTP GETはlistアクションを呼び出します

mysite.com/users/1へのHTTP GETは、単一のアクションを呼び出します

現在、私が呼び出したときにのみ機能します(これは私が望むものではありません

mysite.com/users/listへのHTTP GETはlistアクションを呼び出します

mysite.com/users/single/1へのHTTP GETは、単一のアクションを呼び出します

4

2 に答える 2

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);
    }

};
于 2013-09-25T17:57:14.613 に答える
3

私はこれがより良い解決策かもしれないと思う

config/route.js を作成/編集し、ルートとそれに関連するアクションを明示的に定義する ドキュメントからのリンク

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'
}

*/
};
于 2013-09-25T18:08:47.500 に答える