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

Jam*_*rth 5 express isomorphic-javascript

我正在构建一个同构 React 应用程序,它在服务器上使用express.js。客户端应用程序向其他快速处理程序发出大量 AJAX 请求,这当前需要它们向自身发出多个 HTTP 请求。

作为一种优化,我想拦截我知道服务器处理的请求并直接调用它们(从而避免离开应用程序边界的成本)。我已经访问了应用程序路由器来了解它处理哪些路由,但是我正在努力寻找启动新请求的最佳方法。所以我的问题是:

如何快速处理来自程序源而不是网络的 HTTP 请求?

小智 -1

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

路由器.js

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

客户端控制器.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;
Run Code Online (Sandbox Code Playgroud)

客户端服务.js

function getAll() {
  // implementation
}

module.exports.getAll = getAll;
Run Code Online (Sandbox Code Playgroud)

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