Javascript 无法在SailJS中创建版本化API
首先,各种依赖关系的版本Javascript 无法在SailJS中创建版本化API,javascript,node.js,rest,api,sails.js,Javascript,Node.js,Rest,Api,Sails.js,首先,各种依赖关系的版本 Ubuntu-15.04 NodeJS-6.10.3 NPM-3.10.10 航行-0.12.13 第二,我是这样做的: 1.全球安装的帆 2.在目录/var/www中,运行命令sailsnewapp 3.在api/controllers/v1 4.在api/models UserController.js的代码 module.exports = { findOne: function(req, res) { return res.send("Hello
Ubuntu-15.04
NodeJS-6.10.3
NPM-3.10.10
航行-0.12.13 第二,我是这样做的:
1.全球安装的帆
2.在目录
/var/www
中,运行命令sailsnewapp
3.在
api/controllers/v1
4.在
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");
}
}
module.exports = {}
User.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");
}
}
module.exports = {}
现在,当我使用sails lift
启动服务器时,会发生以下情况:
- 浏览-找不到页面(404)
- 浏览 你好,世界!!!用户->登录
我知道我听起来很傻,但我想这可能是因为我没有使用帆的发电机功能。下面是我接下来做的:
sails生成api v1/Product
。该命令后的文件结构如下:
api
|-- controllers
|-- v1
|-- UserController.js
|-- V1
|-- ProductController.js
|-- models
|-- User.js
|-- V1
|-- Product.js
我在ProductController.js
中编写了与在UserController.js
中类似的代码,我希望现在产品API应该可以工作,但结果与/v1/user/1
的情况相同
根据SailJS的说法,这应该是有效的。那么,有谁能解释为什么会发生这种情况,以及我如何才能使
/v1/user/1
和/v1/user/login
都按预期工作 您有几种方法来实现这一点。第一个选项是在config/blueprints.js
控制器上所有REST blueprint路由的可选装载路径,不包括操作
和快捷方式
路由。
这允许您利用REST蓝图路由,即使您需要为RESTful API方法命名名称空间
现在,使用相同的目录结构,即/controllers/v1/UserController.js
和/models/User.js
,您应该能够访问/login
和findOne
方法
第二个选项是在config/blueprints.js
控制器上所有blueprint路由的可选装载路径,包括rest
、操作
和快捷方式
。
这允许您利用blueprint路由,即使您需要为API方法命名名称空间。
(注意:这仅适用于blueprint自动路线,而不适用于来自sails.config.routes
的手动路线)
现在,目录结构将是/controllers/UserController.js
和/models/User.js
。您有映射/v1
设置
另一方面,您可以完全关闭blueprint routes并在
/config/routes.js
中设置自己的路由。这将为您提供更大的灵活性,并且您还可以在config/env/[your_env].js中拥有environment
特定的路由,这两种方法都是有效的,但是如果我想运行两个API/v1/user/1
和v2/user/1
,前两种方法将不起作用。此外,如果API的数量为100,则第三种方法将无法扩展。同意,这就是为什么最好在config/routes.js
中手动配置路由。如果您的api
有100个方法,那么api
本身就很难处理。很抱歉,但我不同意在config/routes.js
中配置每个路由是解决问题的最佳方法。谢谢你的回复,尽管别担心。就我个人而言,我见过大型生产系统在没有任何问题的情况下工作。我会很高兴,如果有人张贴一个更好的方法!