3

シンプルなノード サービスを構築しようとしています。

  • Web クライアントからの GET 要求を処理します
  • 送信されたパラメーターを解析します
  • これらのパラメーターを使用して、別の REST サービスを非同期的にクエリします
  • REST サービスの結果を元の GET 要求に戻します。

ノードで非同期プログラミングを始めたばかりです。一般に、非同期呼び出し間のスコープを維持する方法を理解するのに苦労しています。

基本的に - JSON サービスの「結果」を「req」経由で元の GET リクエストに戻すにはどうすればよいですか?

Express とRequestを使用しています。ルート ハンドラは次のようになります。

exports.list = function(req, res){
var params = req.query;
var queryParam= params.queryParm;

var restURL =  "http://some-json-service.com?queryParam=" + queryParam;

var request = require('request');

request(restURL, function (error, response, body) {
    if (!error && response.statusCode == 200) {
        var result = JSON.parse(body);
        // ? How do I send result back to the req?
    }
})
4

1 に答える 1

1

文字通り応答を返すことができるので、コメントがある場合は次のようにします。

request(restURL, function (error, response, body) {
  if (!error && response.statusCode == 200) {
      var result = JSON.parse(body);
      res(result)
  }
})

このアプローチの問題は、クライアント要求が 2 番目のサービスからの応答を保留することです。これは、実行する必要がある場合に問題ありません。あなたが引き起こしている可能性のある遅延に注意してください。

また、エラーが発生した場合にも応答を返すようにしてください。

これは非常に簡単に思えるので、質問を完全に理解していない場合はお知らせください。

乾杯。

ビター。

于 2013-06-25T16:47:47.767 に答える