如何在Azure Logic Apps设计器中校验HTTP触发Azure Function返回值
解决方案
1. 先修正Azure Function代码
你之前返回JSON格式失败是因为缺少正确的响应头配置,且手动拼接JSON容易出现转义错误,改用以下写法即可:
import logging import azure.functions as func import json import re def remove_html_tags(raw_html): cleanr = re.compile('<.*?>') cleantext = re.sub(cleanr, '', raw_html) return cleantext def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') mess = req.get_body().decode() message = str(mess).replace("\\r\\n", " ") out = remove_html_tags(message) logging.info(out) # 构造标准JSON响应,指定正确的内容类型头 response_body = { "contentLength": len(out), "cleanContent": out } return func.HttpResponse( json.dumps(response_body), mimetype="application/json", status_code=200 )
修改后Function会返回标准JSON格式,包含纯文本正文长度和清理后的正文内容,方便Logic Apps直接读取对应字段。
2. Logic Apps中校验返回值的配置步骤
- 完成Azure Function调用动作的配置后,在设计器中新增条件控制节点
- 条件左侧取值:选择Azure Function动作输出中的
contentLength字段,也可以直接写表达式int(body('调用_Function的动作名称')?['contentLength']),注意替换为你实际的Function动作名称 - 条件运算符选择「小于」
- 条件右侧取值填写10
- 在「如果为是」的分支中,添加发送电子邮件的动作,配置警告邮件的收件人、主题、正文内容即可
- 如果你不想修改Function代码,仍然使用原来返回纯数字字符串的版本,只需要把条件左侧的取值改为
int(body('调用_Function的动作名称'))即可,Logic Apps会自动把返回的字符串转为整数进行比较。
内容的提问来源于stack exchange,提问作者SiG Kim
相关产品推荐
相关产品推荐

