Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SailsJS-创建无蓝图的版本化API_Javascript_Node.js_Git_Nginx_Sails.js - Fatal编程技术网

Javascript SailsJS-创建无蓝图的版本化API

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

我正试图找出如何为我的应用程序创建一个版本连接的API。 根据这个问题,我必须使用blueprint,但在我的项目中所有blueprint都被停用(这是我老板的愿望)

我希望能够有任何像
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