从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(...); // .. }