您好我已创建了一个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调用者以传递必要的参数。提前致谢。
答案 0 :(得分:3)
所以函数确实有一些方法可以做到这一点,称为Function Filters。此功能允许您编写在运行作业函数之前或之后调用的方法(调用过滤器),或者在代码遇到函数运行时异常(异常过滤器)时调用的方法。您可以编写一个异常过滤器,在输入绑定失败时捕获异常并完成您想要的任务。
不幸的是,在撰写本答案时,函数过滤器仅与预编译的C#函数兼容。目前有issue跟踪此功能的其他方案。