如何从另一个处理程序调用express.js处理程序

时间:2015-02-14 16:15:58

标签: express isomorphic-javascript

我正在构建一个在服务器上使用express.js的同构React应用程序。客户端应用程序向其他表达式处理程序发出了许多AJAX请求,这些处理程序当前需要向自己发出多个HTTP请求。

作为优化,我想拦截我知道服务器处理并直接调用它们的请求(从而避免了离开应用程序边界的成本)。我已经访问应用程序路由器,知道它处理程序的路由,但我很难找到开始新请求的最佳方法。所以我的问题是:

如何处理来自程序源而非网络的HTTP请求?

1 个答案:

答案 0 :(得分:-1)

我建议创建一个公共服务,并在两个处理程序中都需要它。我所做的是打破服务中的业务逻辑并创建处理请求的控制器,并以这种方式调用特定服务,你可以在同一个控制器中使用多个服务,例如。

<强> router.js

var clientController = require('../controllers/client-controller.js');
module.exports = function(router) {
  router.get('/clients', clientController.getAll);
};

<强>客户controller.js

var clientService = require('../services/client-service.js');
function getAll(req, res) {
  clientService.getAll().then(function(data) {
    res.json(data);
  }, function(err) {
    res.json(err);
  });
}

module.exports.getAll = getAll;

<强>客户service.js

function getAll() {
  // implementation
}

module.exports.getAll = getAll;

你也可以使用类似http://visionmedia.github.io/superagent/之类的东西从控制器进行http调用并使用它们。