我试图找出如何为我的应用程序创建版本化API。 根据这个问题https://github.com/balderdashy/sails/issues/322,我必须使用蓝图,但是我的项目中的所有蓝图都已停用(我老板的愿望)。
我希望能够为任何版本提供http://myapi.com/v1/my-custom-route
等任何网址,等等。
到目前为止,我发现的最好方法是将所有控制器复制到类似v322AuthController.js
的内容并映射所有路径,例如
'POST /v3.2.2/se-connecter' : 'v322AuthController.perform_signin'
但我认为这是一个丑陋的伎俩。我目前正在使用Nginx,我的所有代码都使用git进行版本化
如果你有任何想法,谢谢你
Kai23
答案 0 :(得分:1)
你必须禁用所有蓝图吗?比你必须自己编写所有路线。
如果您不想复制控制器,可以试试这个:
config/routes.js
module.exports.routes = {
'post /:apiversion/se-connecter' : {
controller: 'AuthController',
action: 'perform_signin',
skipAssets: true
}
....
}
所以Sails将所有* / se-connecter传递给你的“AuthController”方法“perform_signin”。在您的控制器中,您有api版本:
AuthController.js
module.exports = {
perform_signin: function (req, res) {
var apiversion = req.param('apiversion');
if (apiversion === "0.2.0") {
....
}
}
}
答案 1 :(得分: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']
}
我目前的风帆版本是:0.12.3