2016-08-20 15 views
0

내 경로 버전을 바꾸기 위해 express-routes-versioning을 사용하고 있습니다.세미 버전으로 익스프레스 버전 라우팅

app.post('/messages', authUser, routesVersioning({ 
    "1.0.5": function(req, res) { 
     moduleMessages.addV105(req, res); 
    } 
}, function(req, res) { 
    moduleMessages.add(req, res); 
})); 

이 잘 작동하고 다른 모든 버전의 버전 1.0.5 및 add()에 대한 addV105() 호출합니다. 하지만이 모든 버전에 대한 addV105()를 호출 할> = 1.0.5 (1.0.5, 1.0.6, 1.1.0, 2.3 ...) 모든 버전 < 1.0.5 (1.0.4, 1.0 및 add(). 3, 1.0.0 ..)

이 작업을 수행하는 구문은 무엇입니까?

+0

가 missleading 제목을 고정 – Chris

답변

2

express-routes-versioning은 많은 유용한 작업/범위를 지원하지 않으며 사용 사례로 유용하지 않은 ^~ 만 지원합니다.

또 다른 Express 미들웨어는 을 사용하므로 일치 성 측면에서보다 융통성이 있으므로 express-semver-routing이므로 비교기를 사용할 수 있습니다.

당신은 경로 설정 비트를 다시 작성해야합니까

:

const version = require('express-semver-routing')(); 
... 
app.post('/messages', authUser, version('>= 1.0.5'), function(req, res) { 
    moduleMessages.addV105(req, res); 
}); 

app.post('/messages', authUser, function(req, res) { 
    moduleMessages.add(req, res); 
}); 

(나는 버전이없는 경우, 그렇지 않으면 authUser가 두 번 호출됩니다, 첫 번째 경로에 version()authUser을 전환 할 수 있습니다 생각 버전과 일치).

또는 DRY 원칙을 사용하여이 별도의 라우터를 사용

let router = express.Router(); 

router.use(authUser) 
     .post('/', version('>= 1.0.5'), function(req, res) { 
     moduleMessages.addV105(req, res); 
     }) 
     .post('/', function(req, res) { 
     moduleMessages.add(req, res); 
     }); 

app.use('/messages', router); 
+0

'app.post ('/ 메시지 /'버전 ('> = 1.0.5'), AUTHUSER, 함수 (REQ, 해상도) -X '+'POST 컬 -H "승인 - 버전 : 1.0.5"는이 foo.bar/messages' 에러 만료'오류 잘못된 값 semver 제공 : Object 객체]
    26 : /var/www/21messages.com/dev/node_modules/express-semver-routing/index.js에서 46' – Chris

+0

는 해결 : https://github.com/n-johnson/express-semver-routing/issues /1 – Chris