指定控制器操作之上的路由和动词

时间:2014-12-20 23:52:22

标签: sails.js

是否可以在控制器操作之上指定路由和接受的动词,而不必在config / routes.js中指定它?

module.exports = {
    // GET /users
    getAllUsers: function (req, res) {
        User.find().exec(function (err, obj) {
            res.send(obj);
        });
    },
    // GET /users/:id
    getUserByID: function (req, res) {
        User.find({id:req.params.id}).exec(function (err, obj) {
            res.send(obj);
        });
    },
    // POST /users
    createUser: function (req, res) {
        User.create(req.body).exec(function (err, obj) {
            res.send(201, obj);
        });
    }
};

1 个答案:

答案 0 :(得分:4)

不,Sails目前不支持此功能。但是,如果您只是尝试为模型创建RESTful路由,Sails会通过blueprints系统免费为您提供这些路由。因此,默认情况下,如果您有api/models/User.js文件和api/controllers/UserController.js文件,则会自动添加以下路由:

GET    /user     ==> UserController.find
GET    /user/:id ==> UserController.findOne
POST   /user     ==> UserController.create
PUT    /user/:id ==> UserController.update
DELETE /user/:id ==> UserController.destroy

这些操作有默认处理程序,或者您可以在控制器文件中覆盖它们。

对于associations to other models的模型,还会添加一些额外的路线。有关详细信息,请参阅full blueprint API参考。

请注意,您还可以直接在config/routes.js文件中绑定路由处理程序,例如"get /foo": function(req, res) {...},但这种情况违背了使用MVC框架的目的。