2015-06-20 101 views
0

我试图设置不同的版本,只要我更新节点js中的路由而不打破以前的版本。节点js,设置路由的版本

我尝试:

index.js:

... 
app.use(bodyParser.urlencoded({ 
    extended: true 
})); 
app.use(bodyParser.json()); 
app.use(json()); 
app.use(authChecker); 

require('./routes.js')(app, 'v1'); <-- this line 
require('./routes.js')(app, 'v2'); <-- and this line 

http.createServer(app).listen(4080); 
console.log('Listening on port 4080...'); 
... 

routes.js:

module.exports = function(app, version) { 

    console.log("version", version); 

    var 
    IO_ADU = require('./' + version + '/io-add-or-update.js'), 
    IO_ADD = require('./' + version + '/io-add.js'), 
    IO_AGG = require('./' + version + '/io-aggregate.js'), 
    IO_DEL = require('./' + version + '/io-delete.js'), 
    IO_FIN = require('./' + version + '/io-find.js'), 
    IO_UPD = require('./' + version + '/io-update.js'); 

    //calls 

    app.post(version + '/find',  IO_FIN.find); 
    app.post(version + '/aggregate', IO_AGG.aggregate); 
    app.post(version + '/add',  IO_ADD.add); 
    app.post(version + '/update',  IO_UPD.update); 
    app.post(version + '/delete',  IO_DEL.delete); 
    app.post(version + '/addUpdate', IO_ADU.addOrUpdateIfExist); 
}; 

调用任何这些路线时,我得到的回应是:

{protocol=http/1.1, code=404, message=Not Found, url=http://my-ip:4080/v2/addUpdate} 

从url中删除版本,并在index.js和routes.js中使其工作。但是,我怎样才能使它与版本工作或类似的东西?

当运行index.js我没有得到任何错误或警告。而当我打电话给这个节点的应用程序时,我可以看到这个调用被接收到了,它就好像没有找到这个调用。

任何想法?

+0

你在那里使用'app.post'。请求是否“获得”?如果是这样,那么你的应用根本不处理该请求。 –

+0

不是,它的一个职位请求。但好点,但我有时想念的东西。 –

+2

'app.post'调用在'version'之前缺少''/“+'。 – GillesC

回答

0

就像在评论中说的那样,我错过了版本前的“/”。