Javascript SailsJS-创建无蓝图的版本化API
我正试图找出如何为我的应用程序创建一个版本连接的API。 根据这个问题,我必须使用blueprint,但在我的项目中所有blueprint都被停用(这是我老板的愿望) 我希望能够有任何像Javascript SailsJS-创建无蓝图的版本化API,javascript,node.js,git,nginx,sails.js,Javascript,Node.js,Git,Nginx,Sails.js,我正试图找出如何为我的应用程序创建一个版本连接的API。 根据这个问题,我必须使用blueprint,但在我的项目中所有blueprint都被停用(这是我老板的愿望) 我希望能够有任何像http://myapi.com/v1/my-custom-route,等等,适用于任何版本 到目前为止,我找到的最好的方法是将所有控制器复制到类似v322AuthController.js的东西上,并映射所有路由,如 'POST /v3.2.2/se-connecter' : 'v32
http://myapi.com/v1/my-custom-route
,等等,适用于任何版本
到目前为止,我找到的最好的方法是将所有控制器复制到类似v322AuthController.js的东西上,并映射所有路由,如
'POST /v3.2.2/se-connecter' : 'v322AuthController.perform_signin'
但我认为这是一个丑陋的把戏。我目前正在使用Nginx,我所有的代码都是用git版本连接的
如果你有任何想法,谢谢你
Kai23您必须禁用所有蓝图吗?你必须写下你所有的路线和我们自己的路线
如果不想复制控制器,可以尝试以下方法:
config/routes.js
module.exports.routes = {
'post /:apiversion/se-connecter' : {
controller: 'AuthController',
action: 'perform_signin',
skipAssets: true
}
....
}
module.exports = {
perform_signin: function (req, res) {
var apiversion = req.param('apiversion');
if (apiversion === "0.2.0") {
....
}
}
}
因此,Sails将所有*/se连接器传递给“AuthController”中的“perform_sign”方法。在控制器中,您有自己的api版本:
AuthController.js
module.exports.routes = {
'post /:apiversion/se-connecter' : {
controller: 'AuthController',
action: 'perform_signin',
skipAssets: true
}
....
}
module.exports = {
perform_signin: function (req, res) {
var apiversion = req.param('apiversion');
if (apiversion === "0.2.0") {
....
}
}
}
我的做法:
将控制器的子文件夹创建为:
/controllers/v1/UserController.js
/controllers/v2/UserController.js
在routes.js文件中,添加如下内容:
'POST /api/v2/user': 'v2/UserController.create',
'POST /api/v1/user': 'v2/UserController.create',
在policies.js中,您可以添加如下中间件:
'v2/UserController': {
'create': ['isAuthenticated','isAuthorized']
}
我当前的sails版本是:0.12.3