【问题标题】:Azure functions: How does one access the contents of context.res.body?Azure 函数:如何访问 context.res.body 的内容?
【发布时间】:2020-11-01 12:36:59
【问题描述】:

在我的网站上,我在 azure 函数上使用 fetch POST 请求来存储一些数据。如果函数接收到所有数据,则将 context.res.satus 设置为 200,否则设置为 400,并根据接收到的数据量将 context.res.body 设置为确认消息:

    var returnMessage = mail ? "User entry successfully added to the database" : "Please enter a valid email";
    returnMessage = phone ? returnMessage : "Please enter a valid phone number";
    returnMessage = lName ? returnMessage : "Please provide your last name";
    returnMessage = fName ? returnMessage : "Please procide your first name";
    returnMessage = partKey ? returnMessage : "Something went wrong while generating a partition key";

    context.res = {
        status: (partKey && fName && lName && phone && mail) ? 200 : 400,
        body: returnMessage
    };

所以,我在我的代码中调用fetch('URL',someStuff).then((res) => processResponse(res))res 总是可以很好地返回并传递给processResponse,如下所示:

function processResponse(response) {
    if (response.status === 200) {
        var test = JSON.stringify(response.body);
        document.getElementById("output").innerHTML = `<div class="alert alert-success" role="alert">${test}</div>`;
    }
}

如果函数接收到所有数据,则更新 div 元素“输出”,如果没有,则不更新,因此 response.status 与值 200 的比较显然有效。变量test 我最初认为如果设置为response.body 会起作用,但这不起作用,而是变量test 将设置为单词“对象”。我对 JSON 知之甚少,但显然我们可以使用JSON.stringify() 将对象转换为字符串,因此为什么test 现在是JSON.stringify(response.body),但这只是使test 的值等于一组空方括号。在我正在使用的教程中,他们说要使用response.json(),如下所示:

function processResponse(response) {
    if (response.status === 200) {
        response.json()
            .then(function(data) {
                document.getElementById("output").innerHTML = `<div class="alert alert-success" role="alert">${data.message}</div>`;
            })
            .catch(function(){
                document.getElementById("output").innerHTML = `<div class="alert alert-success" role="alert">"Caught"</div>`;
            });
    }
}

但是每次我尝试response.json() 时,它都会失败并且只有.catch() 部分运行。发生了什么?如何访问存储在response.body 中的字符串?

【问题讨论】:

  • 我的回答有帮助,还是遇到了相同/新的问题?

标签: javascript json azure azure-functions


【解决方案1】:

如果格式不是json,函数response.json()会返回错误。您可能没有在您的 post 请求中设置 Content-Type: application/json 标头! (更多信息请参见HTTP Content-Type Header and JSON

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-26
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 2021-09-27
    相关资源
    最近更新 更多