javascript - Node.js https.request : Access the requested data from the callback response scope

标签 javascript node.js

我正在执行 http.request,如果服务器响应错误 500,我想访问请求期间发送的数据,以便重试该请求。如何从响应回调范围访问 requestBodyData 参数?

见下文:

var arrayofobjects = [
    {
        "name" : "peter",
        "age" : "24"
    },
    {
        "name" : "gleice",
        "age" : "19"
    },
    {
        "name" : "pedro",
        "age" : "34"
    }
];

for(var x=0; x<arrayofobjects.length; x++){
    sendModelInputData(arrayofobjects[x]);
}

function sendModelInputData (requestBodyData) {

    const req = https.request(connectionInfo, (res) => {

        logger.info(`STATUS: ${res.statusCode}`)
        logger.debug(`HEADERS: ${JSON.stringify(res.headers)}`)

        //how to access requestBodyData from here????

        res.setEncoding('utf8');

        res.on('data', (chunk) => {

            logger.info(`BODY: ${chunk}`);

        });

        res.on('end', () => {
            //console.log('No more data in response.');
        });
    });

    req.on('error', (e) => {
        //console.error(`problem with request: ${e.message}`);
        logger.error(`problem with request: ${e.message}`);
    });


    //req.end(postData);
    req.end(JSON.stringify(requestBodyData));

}

最佳答案

从您的评论中,我意识到您正在 sendModelInputData 之外更改 requestBodyData,因此您必须克隆它以保留原始值。您可以使用Object.assign来实现这一点。

function sendModelInputData (requestBodyData) {
    requestBodyData = Object.assign({}, requestBodyData); // Shallow clone

    // On retry use requestBodyData which will be the same data you sent
}

检查以下问题,以了解发生了什么。

Javascript by reference vs. by value

关于javascript - Node.js https.request : Access the requested data from the callback response scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50008246/

相关文章:

javascript - 向 Azure Blob 存储 [REST API][Azure Blob 存储] 发出 GET 请求时授权失败

node.js - async.parallel 和 async.series 有什么区别?

javascript - 类型错误 : Object #<IncomingMessage> has no method 'render'

javascript - 可以使用 onclick 添加多个事件处理程序

javascript - 观看未按预期工作

javascript - Angular JS 响应从 Javascript 所做的更改

javascript - jquery '$.when' : how to trigger 'done' callback even in case of error

javascript - 如何在 Node.js 中获取 Twilio SMS 正文

node.js - MongoDB/mongoose 在两个模型之间创建关系?

javascript - 对具有多个值的字符串使用 Includes 方法