2017-07-12 4 views
-1

私は(HTTPS、モジュールを表現する)ノードを使用して、ハイレベルで次の操作を実行しようとしています:この場合ノードエクスプレスレスポンスオブジェクトにアクセスする方法は?

  1. は/例エンドポイント上のPOSTリクエスト(R1と言う)(アプリを発現する)をリッスン
  2. を読みますペイロードをリクエストから取り出し、それを再パッケージ化し、外部REST APIに対してhttps POSTリクエスト(R11など)を行います。
  3. R11への応答からポストペイロードを読み取り、それを再パッケージ化してR1への応答として送信します。

問題は、どのようにcallbackExternalApi内から応答を送信するのですか?以下のコードを見て、コメントに質問してください。

const callbackExternalApi = 
    function (response) { 
     response.on('data', 
      function(data) { 
       // do some processing on data 
       var processedData = ... 
       **// I want response_R1 over here 
       // so that I can do the following 
       response_R1.send(processedData) 
       // how do I get response_R1 over here??** 
      }) 
    } 

    const requestHandlerExample = 
    function (request_R1, response_R1) { 

     // payload 
     var postBodyJson = '' // some payload here 

     // headers 
     var postHeaders = { 
     'content-type' : 'application/json', 
     'accept'  : 'application/json' 
     } 

     // options 
     var postOptions = { 
      'host'  : 'localhost', 
      'port'  : '9000', 
      'path'  : '/external/rest/api', 
      'method' : 'POST', 
      'headers' : postHeaders 
     } 

     // do the post call 
     var postRequest = _httpsModule.request(postOptions, callbackExternalApi) 
     postRequest.write(postBodyJson); 
     postRequest.end(); 
     postRequest.on('error', function(error) { 
      console.error('an error occured'+error) 
     }) 
    } 

    _app.post('/example', requestHandlerExample) 

おかげで、

Jatin

答えて

0

私はちょうどresponse_R1のためのグローバル変数を定義し、requestHandlerExampleコールバックのものを設定します。それが最良のアプローチであるかどうかはわかりませんが、うまくいきます。

var _response_R1 

const callbackExternalApi = 
function (response) { 
    response.on('data', 
     function(data) { 
      // do some processing on data 
      var processedData = ... 
      _response_R1.send(processedData) 
     }) 
} 

const requestHandlerExample = 
function (request, response) { 
    _response_R1 = response // set this for use in callbackExternalApi 

    // payload 
    var postBodyJson = '' // some payload here 

    // headers 
    var postHeaders = { 
    'content-type' : 'application/json', 
    'accept'  : 'application/json' 
    } 

    // options 
    var postOptions = { 
     'host'  : 'localhost', 
     'port'  : '9000', 
     'path'  : '/external/rest/api', 
     'method' : 'POST', 
     'headers' : postHeaders 
    } 

    // do the post call 
    var postRequest = _httpsModule.request(postOptions, callbackExternalApi) 
    postRequest.write(postBodyJson); 
    postRequest.end(); 
    postRequest.on('error', function(error) { 
     console.error('an error occured'+error) 
    }) 
} 

_app.post('/example', requestHandlerExample) 
関連する問題