首先,各种依赖的版本
Ubuntu - 15.04
NodeJS - 6.10.3
NPM - 3.10.10
帆 - 0.12.13
其次,我做了什么:
1.全球安装的帆
2.在目录/var/www
中,运行命令sails new app
3.在UserController.js
中创建了文件api/controllers/v1
4.在User.js
api/models
UserController.js
的代码module.exports = {
findOne: function(req, res) {
return res.send("Hello World!!! User -> findOne");
},
login: function(req, res) {
return res.send("Hello World!!! User -> login");
}
}
User.js
的代码module.exports = {}
现在,当我使用sails lift
启动服务器时,会发生什么:
Hello World !!!用户 - >登录
我知道我听起来很傻,但我认为这可能是因为我没有使用Sails的 Generator 功能。那么,这就是我接下来做的事情:sails generate api v1/Product
。此命令后的文件结构如下:
api
|-- controllers
|-- v1
|-- UserController.js
|-- V1
|-- ProductController.js
|-- models
|-- User.js
|-- V1
|-- Product.js
我在ProductController.js
中编写了类似的代码,就像我在UserController.js
中所做的那样,我预计现在Product API应该可以运行,但结果与/v1/user/1
的情况相同。
根据SailJS Blueprint API,这应该有效。那么,任何人都可以解释为什么会这样,我怎样才能使 /v1/user/1
和 /v1/user/login
按预期工作。
答案 0 :(得分:1)
您有两种方法可以实现这一目标。第一个选项是将restPrefix
设置为/v1
内的config/blueprints.js
控制器上所有REST蓝图路由的可选安装路径,它不包括
actions
和shortcuts
路由。 这使您可以利用REST蓝图路由,即使您需要命名RESTful API方法
现在使用相同的目录结构,即/controllers/v1/UserController.js
和/models/User.js
,您应该能够同时访问/login
和findOne
方法。
第二个选项是将prefix
设置为/v1
config/blueprints.js
控制器上所有蓝图路径的可选安装路径,包括
的手动路线rest
,actions
和shortcuts
。 这使您可以利用蓝图路由,即使您需要命名API方法。 (注意:这仅适用于蓝图自动布线,而不适用于sails.config.routes
)
现在目录结构为/controllers/UserController.js
和/models/User.js
。您已为您设置映射/v1
。
另一方面,您可以完全关闭蓝图路线并在/config/routes.js
内设置自己的路线。这将为您提供更大的灵活性,您还可以在environment
config/env/[your_env].js
个特定路线