在Express或与Node.js连接,有没有办法在内部调用另一个路由?
所以,我有这样的设置(在Express中):
app.get('/mycall1', function(req,res) { res.send('Good'); });
app.get('/mycall2', function(req,res) { res.send('Good2'); });
如果我想要一个聚合函数调用/mycall1
和/mycall2
而不重写代码并重用/mycall1
和/mycall2
的代码怎么办?
例如:
app.get('/myAggregate', function (req, res) {
// call /mycall1
// call /mycall2
});
回答如下:
不,如果不重写或重构代码,这是不可能的。原因是res.send
actually calls res.end
after it is done writing。这样就结束了回应,没有更多的东西可以写出来。
正如您所暗示的那样,您可以通过重构代码来实现所需的效果,以便/mycall1
和/mycall2
在内部调用单独的函数,并且/myAggregate
调用这两个函数。
在这些函数中,您必须使用res.write
来阻止结束响应。 /mycall1
,/mycall2
和/myAggregate
的处理程序将分别调用res.end
来实际结束响应。