[英]SailsJS - Create versioned API without blueprint
我试图弄清楚如何为我的应用程序创建版本化的API。 根据这个问题https://github.com/balderdashy/sails/issues/322 ,我必须使用蓝图,但是所有蓝图都在我的项目中被停用(老板的一个愿望)。
我希望能够拥有任何版本的URL,例如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
}
....
}
因此,Sails将所有* / se连接器都传递给“ AuthController”中的方法“ perform_signin”。 在控制器中,您可以使用api版本:
AuthController.js
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',
在您的policy.js中,您可以添加如下中间件:
'v2/UserController': {
'create': ['isAuthenticated','isAuthorized']
}
我当前的航行版本是:0.12.3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.