繁体   English   中英

SailsJS-创建没有蓝图的版本化API

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM