2015-06-20 85 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

就像在評論中說的那樣,我錯過了版本前的「/」。