2013-09-25 3 views
2

Я пытаюсь создать REST API в Sails.js 0.9xSails.js REST без действия

У меня есть контроллер, как в следующем:

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

}; 

Как бы я быть в состоянии получить доступ URL-адреса с использованием метода HTTP и маршрута без указания имени действия?

Например

HTTP GET к mysite.com/users/ будет вызывать список действия

HTTP GET к mysite.com/users/1 будет вызывать single Действие

В настоящее время это только кс, когда я взываю (который НЕ что я хочу)

HTTP GET к mysite.com/users/list будет вызывать лист действие

HTTP GET к MySite .com/пользователей/одна/1 будет вызывать действие одного

ответ

3

Я думаю, что это может быть лучшим решением

Создание/редактирование конфигурации/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' 
} 

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

}; 
+0

Это умный! Но он чувствует себя немного взломанным. –

+1

Это правильный метод в соответствии с документами Sails и лучше, чем переопределение основных маршрутизаторов. – Ucinorn

Смежные вопросы