0

私はNode.jsを学んでいますが、何らかの理由で別のIPにhttp.requestを設定し、そこからの応答を取得してkoaのctx.bodyに適用する必要があります。私は次のようにコードを書きました:

var refreshData = async (ctx, next) =>{
    var option = {
        host: 'xxx.xxx.xxx.xxx',
        port: 8080,
        path: '/reqPath',
        method: 'POST',
        headers:{'Content-Type': 'application/json'}
    };

    var postData = "1";
    var resData = '';
    var req = http.request(option, function(res){
        res.setEncoding('utf8');        
        res.on('data', function (chunk) {
            resData = resData + 'Chunk: ' + chunk;
        });
        res.on('end', function(){
            ctx.res.body = resData;
            console.log('ResponseData: ' + ctx.res.body);    //shows the correct data
        });
    });

    req.on('error', function(e){
        console.log('problem with request: ' + e.message);
    });

    req.write(postData);
    req.end();      
};

module.exports = {
    'GET /refreshDataGet': refreshData,
};

コントローラー マッピングの使用方法を学習すると機能し、resData は正しいデータです。しかし、Web ページから「GET /refreshDataGet」を実行すると、「ステータス 0」しか取得できません。http.request を実行せず、JSON オブジェクトを ctx.body に直接適用すると、Web ページで正しいステータスとデータを取得できます。私は何か見落としてますか?または、これを実行するためのより良い解決策はありますか?

ありがとう!!


編集: 404 を返します。手動で 200 に設定すると、応答本文に何も見つかりません。しかし、デバッグ出力は内部で正しいです

res.on('終了', 関数(){})

4

1 に答える 1