2014-10-10 5 views
0

내 애플리케이션의 버전이있는 API를 만드는 방법을 알아 내려고하고 있습니다. 이 호 https://github.com/balderdashy/sails/issues/322에 따르면 청사진을 사용해야하지만 모든 청사진은 프로젝트에서 비활성화됩니다 (사장님의 소원).SailsJS - 청사진없이 버전이있는 API 생성

모든 버전에 대해 http://myapi.com/v1/my-custom-route과 같은 URL을 가질 수 있기를 원합니다.

지금까지 내가 찾은 가장 좋은 방법은 v322AuthController.js 같은 것을 모든 컨트롤러를 복제하고

'POST /v3.2.2/se-connecter'    : 'v322AuthController.perform_signin' 

처럼 모든 경로를 매핑하는 것이다 그러나 나는 그 못생긴 트릭 생각합니다. 나는 당신이 어떤 생각

Kai23

답변

1

모든 청사진을 해제 할 필요가있는 경우

감사합니다 현재의 Nginx를 사용하고 있는데 내 모든 코드는 자식과 versionned입니까? 우리의 모든 노선을 작성해야합니다. 당신이 당신의 컨트롤러를 복제 할 수없는 경우

이 시도 할 수 있습니다 :

config/routes.js

module.exports.routes = { 

'post /:apiversion/se-connecter' : { 
    controller: 'AuthController', 
    action: 'perform_signin', 
    skipAssets: true 
} 
.... 
} 

그래서 항해는 "AuthController에서"perform_signin "방법에 대한 모든 */SE-커넥터 전달 ". 컨트롤러에서 당신이 당신의 API 버전이 있습니다

AuthController.js

module.exports = { 
    perform_signin: function (req, res) { 

     var apiversion = req.param('apiversion'); 

     if (apiversion === "0.2.0") { 
     .... 
     } 
    } 

} 
0

내 방식 :

이 같은 컨트롤러 하위 폴더를 만듭니다 : 당신의 routes.js 파일에서

/controllers/v1/UserController.js 
/controllers/v2/UserController.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