最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

在Express或与Node.js连接,有没有办法在内部调用另一个路由?

IT培训 admin 12浏览 0评论

在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来实际结束响应。

在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来实际结束响应。

发布评论

评论列表 (0)

  1. 暂无评论