我正在构建一个在服务器上使用 express.js 的同构 React 应用程序。客户端应用程序向其他快速处理程序发出许多 AJAX 请求,这些请求当前需要它们向自身发出多个 HTTP 请求。
作为一种优化,我想拦截我知道服务器处理的请求并直接调用它们(从而避免离开应用程序边界的成本)。我已经访问了应用程序路由器以了解它处理哪些路由,但是我正在努力寻找启动新请求的最佳方式。所以我的问题是:
如何快速处理来自程序源而不是网络的 HTTP 请求?
我正在构建一个在服务器上使用 express.js 的同构 React 应用程序。客户端应用程序向其他快速处理程序发出许多 AJAX 请求,这些请求当前需要它们向自身发出多个 HTTP 请求。
作为一种优化,我想拦截我知道服务器处理的请求并直接调用它们(从而避免离开应用程序边界的成本)。我已经访问了应用程序路由器以了解它处理哪些路由,但是我正在努力寻找启动新请求的最佳方式。所以我的问题是:
如何快速处理来自程序源而不是网络的 HTTP 请求?
我建议创建一个通用服务并在两个处理程序中都需要它。我所做的是打破服务中的业务逻辑并创建控制器来处理请求并以这种方式调用特定服务,您可以在同一控制器中使用多个服务,例如。
路由器.js
var clientController = require('../controllers/client-controller.js');
module.exports = function(router) {
router.get('/clients', clientController.getAll);
};
客户端控制器.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;
客户端服务.js
function getAll() {
// implementation
}
module.exports.getAll = getAll;
您还可以使用http://visionmedia.github.io/superagent/之类的东西从控制器进行 http 调用并使用它们。