从NodeJS内部调用Express Route

我有一个ExpressJS路由我的API,我想从NodeJS内部调用它

var api = require('./routes/api') app.use('/api', api); 

并在我的./routes/api.js文件中

 var express = require('express'); var router = express.Router(); router.use('/update', require('./update')); module.exports = router; 

所以如果我想从我的前端调用/api/update/something/:withParam它的所有发现,但我需要从我的NodeJS脚本的另一个方面调用它,而不必在第二个位置重新定义整个函数

我已经尝试从内部使用HTTP模块,但我只是得到一个“ECONNREFUSED”错误

 http.get('/api/update/something/:withParam', function(res) { console.log("Got response: " + res.statusCode); res.resume(); }).on('error', function(e) { console.log("Got error: " + e.message); }); 

我明白快递背后的想法是创build路线,但我怎么在内部打电话给他们

处理这个问题的“通常”或“正确”的方法是让你想调用的函数自行分离,从任何路由定义中分离出来。 也许在自己的模块中,但不一定。 然后,只要你需要它就打电话给它。 像这样:

 function updateSomething(thing) { return myDb.save(thing); } // elsewhere: router.put('/api/update/something/:withParam', function(req, res) { updateSomething(req.params.withParam) .then(function() { res.send(200, 'ok'); }); }); // another place: function someOtherFunction() { // other code... updateSomething(...); // .. }