微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure函数:如何访问context.res.body的内容?

如何解决Azure函数:如何访问context.res.body的内容?

在我的网站上,我对azure函数使用了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设置为单词“ Object”。我对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中的字符串?

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。