【问题标题】:Node JS Azure function get the response data after post methodNode JS Azure函数在post方法后获取响应数据
【发布时间】:2021-05-04 04:35:42
【问题描述】:

我正在使用 JavaScript 创建一个常见的 Azure 函数。该函数将处理 POST 调用并将值 POST 到另一个 API。该函数按预期工作,但在 Azure 函数中使用请求的 POST 方法后我无法获取响应值

    module.exports = async function (context, req) {
    var request = require("request");  
    var options = {
        url: "",
        method: "POST",
        json: true,
        body: req.body,
        headers: {                 
            'Content-Type': 'application/json',
            'Accept': 'application/json'
        }
    };
    return new Promise(async (resolve, reject) => {
    var responseData;
    var req = await request.post(options, (err, res, body) => {
        if (err) {
            console.log(err);
            reject(err);
        } else {
            responseData = body; 
            console.log(responseData); // it works
            resolve(responseData);
        }
    });
});

 
}

当在本地机器中作为单独的节点应用程序执行时,相同的逻辑会起作用。如何获取响应值并传递给源站?

【问题讨论】:

    标签: javascript node.js api request azure-functions


    【解决方案1】:

    异步/等待不做任何事情。请求模块不返回 Promise。

    如果你删除你的冗余代码会更好

        module.exports = function (context, req) {
        var request = require("request");  
        var options = {
            url: "",
            method: "POST",
            json: true,
            body: req.body,
            headers: {                 
                'Content-Type': 'application/json',
                'Accept': 'application/json'
            }
        };
        return new Promise((resolve, reject) => {
        var responseData;
        request.post(options, (err, res, body) => {
            if (err) {
                console.log(err);
                reject(err);
            } else {
                responseData =res.body; 
                console.log(responseData); // it works
                resolve(responseData);
            }
        });
    });
    
     
    }
    

    【讨论】:

    • 感谢何塞的回复。我厌倦了删除冗余代码,但仍然没有将响应发送到源。 console.log(responseData) 给出了预期的结果。在 azure function context.res = { body: responseData } 中,promise 和 request 模块可以工作,但不能在其中
    • 我再次更改了代码...删除另一个异步...并且建议从响应中获取正文(res.body)。立即尝试
    • 它在删除异步后工作,并且能够通过在请求模块中添加 context.res = { body: responseData } 来获得响应。非常感谢您的支持
    猜你喜欢
    • 1970-01-01
    • 2017-07-02
    • 2022-01-26
    • 2020-09-23
    • 1970-01-01
    • 2018-03-13
    • 2020-10-28
    • 1970-01-01
    • 2020-07-18
    相关资源
    最近更新 更多