使用Azure Function运行nodejs

时间:2018-03-31 17:31:33

标签: node.js function azure

我是Azure Functions和nodejs的新手(我的背景主要是powershell)。我正在尝试设置一个可以处理事件网格事件的函数,我读过的所有内容都说连接两者应该很容易。但是,我似乎无法通过“简单”验证步骤。我使用以下代码创建了该函数:

module.exports = function (context, req) {
context.log('Event Grid Validation.');
context.log(req.body[0])

if(req.body[0].data.validationcode){
    context.res = {
        // status: 200, /* Defaults to 200 */
        body: {"validationResponse": req.body[0].data.validationcode}
    };
} else {
    context.res = {
    body: "Sorry no validation code found"
    };
}

context.done();

};

当我直接向函数发送请求时,我得到了预期的结果。例如,使用以下正文发送请求:

[{     “id”:1234,     “数据”:{                  “validationcode”:“Woo Validate Me Baby”              },     “主题”:“请”,     “eventType”:“新事件” }]

作为独立请求,效果很好。但事件网格不断踢回同样的失败消息

部署失败并出现以下错误:{“code”:“Url validation”,“message”:“验证提供的端点的尝试失败。有关详细信息,请访问https://aka.ms/esvalidation。”}

我觉得我在某个地方犯了一个新手的错误,但我无法弄清楚在哪里。

任何帮助都会非常感激。谢谢!

2 个答案:

答案 0 :(得分:1)

以下是一步一步的演示,如果您是初学者,我建议您按照演示进行演示(即使它不在node.js中,只是为了得到这个想法)。我相信你的问题是比编码问题更多的权限。

https://www.codeproject.com/Articles/1220389/Azure-EventGrid-Azure-Function-demo

答案 1 :(得分:0)

GOT IT!我当时很蠢。

validationCode not validationcode .... case sensitive argh

module.exports = function (context, req) {
context.log('Event Grid Validation.');
context.log(req.body[0])
context.log(req.body[0].data.validationCode)

context.res = {
   "validationResponse": req.body[0].data.validationCode
};
context.done();
};

这个有效!谢谢你的帮助!