3

サーバーでexpress.jsを使用している同形のReactアプリケーションを構築しています。クライアント アプリは、他の Express ハンドラーに対して多数の AJAX 要求を行います。これにより、現在、それ自体に対して複数の HTTP 要求を行う必要があります。

最適化として、サーバーが処理することを知っているリクエストをインターセプトし、それらを直接呼び出したいと思います(したがって、アプリケーションの境界を離れるコストを回避します)。アプリルーターにアクセスして、それが処理するルートを知ることはできますが、新しいリクエストを開始するための最良の方法を見つけるのに苦労しています. だから私の質問は:

ネットワークではなくプログラム ソースからの HTTP 要求を処理するために Express を取得するにはどうすればよいですか?

4

1 に答える 1

-1

共通のサービスを作成し、両方のハンドラーでそれを要求することをお勧めします。私がしているのは、サービスのビジネスロジックを壊し、リクエストを処理して特定のサービスを呼び出すコントローラーを作成することです。この方法で、同じコントローラーで複数のサービスを使用できます。

router.js

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

client-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;

client-service.js

function getAll() {
  // implementation
}

module.exports.getAll = getAll;

http://visionmedia.github.io/superagent/のようなものを使用して、コントローラーから http 呼び出しを行い、それらを利用することもできます。

于 2015-02-23T06:43:47.863 に答える