JavaScript:Azure函数blob绑定处理异常

时间:2018-04-06 20:57:51

标签: javascript azure azure-functions azure-blob-storage

您好我已创建了一个azure函数httptrigger,用blob输入绑定从blob存储中读取blob。

下面的

是function.json:

{
  "disabled": false,
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req"
    },
    {
      "name" : "blobContent",
      "type": "blob",
      "direction": "in",
      "path": "containerName/{id}.{extn}",
       "connection": "AzureWebJobsStorage"
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    }
  ]
}

并且index.js文件是:

module.exports = function (context, req) {
    context.log('JavaScript HTTP trigger function processed a request.');

    if (req.query.id || (req.body && req.body.id)) {   
        context.res = {
            body : {'data' : context.bindings.blobContent},
            headers : {'Content-type': 'application/xml"'}
        }
    }
    else {
        context.res = {
            status: 400,
            body: "Please pass a object/chuck id on the query string or in the request body"
        };
    }
    context.done(null,context.res);
};

我使用get和post方法来调用httptrigger。由于我使用的是blob输入绑定,因此在处理index.js之前会检索内容。有了这个,我无法验证API是否使用id和extn进行调用。有没有办法处理异常并将消息返回给API调用者以传递必要的参数。提前致谢。

1 个答案:

答案 0 :(得分:3)

所以函数确实有一些方法可以做到这一点,称为Function Filters。此功能允许您编写在运行作业函数之前或之后调用的方法(调用过滤器),或者在代码遇到函数运行时异常(异常过滤器)时调用的方法。您可以编写一个异常过滤器,在输入绑定失败时捕获异常并完成您想要的任务。

不幸的是,在撰写本答案时,函数过滤器仅与预编译的C#函数兼容。目前有issue跟踪此功能的其他方案。