12

我正在尝试将一个额外的查询参数传递给 Azure 逻辑应用,以便我可以在逻辑应用工作流中处理以下数据

例如https://logicURL?SelectedData= "%7BsiteURL%3AXYZ.sharepoint.com%2Fsites%2FXYZDev%7D" (编码字符串)

在 HTTP 操作中,我试图用下面的 JSON 模式处理上面传递的数据

{
    "kind": "Http",
    "inputs": {
        "schema": {
            "properties": {
                "selectedData": {
                    "type": "string"
                }
            },
            "type": "object"
        }
    } }

我没有得到 selectedData 值。我需要使用 decodecomponentURI 然后使用 JSON 值。

Azure 逻辑应用架构

在这里找到错误

Azure 逻辑应用运行时错误

4

3 回答 3

14

首先,您需要查询参数添加到现有的参数中,例如

https://xyz.logic.azure.com:443/workflows/id/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=code&SelectedData="%7BsiteURL%3AXYZ.sharepoint.com%2Fsites%2FXYZDev%7D"

https://xyz.logic.azure.com:443/workflows/id/triggers/manual/paths/invoke
  ?api-version=2016-10-01
  &sp=%2Ftriggers%2Fmanual%2Frun
  &sv=1.0
  &sig=code
  &SelectedData="%7BsiteURL%3AXYZ.sharepoint.com%2Fsites%2FXYZDev%7D"

然后,您应该能够使用

@triggerOutputs()['queries']['SelectedData']

可以看到,不需要在Http Trigger中添加schema来获取查询参数

于 2018-06-27T08:43:08.573 回答
4

语境

  • MSFT Azure Logicapp
  • MSFT Logicapp 工作流定义语言
  • 直播版截至 2020-06-25 04:56:31

问题

  • Logicapp 开发者想要获取通过 HTTP GET 传入的 URL 查询参数的值

解决方案

  • 此用例的解决方案在此 StackOverflow 线程的其他地方提供
  • 但是,此插件答案重构了以前的解决方案
    • 它解决了在 MSFT 工作流定义语言中构造表达式(在“代码”视图中查看逻辑应用时看到的基于 JSON 的源代码)

细节

  • 此 URL 扩展了此 SO 线程中的原始问题和另一个答案
  • 在这里我们期望FirstName LastNameFaveColor属性
    https://xyz.logic.azure.com:443/workflows/id/triggers/manual/paths/invoke
      ?api-version=2016-10-01
      &sp=%2Ftriggers%2Fmanual%2Frun
      &sv=1.0
      &sig=代码
      &FirstName=霍默
      &LastName=Huimpson
      &FaveColor=     
  • 标准初始化:以下足以捕获所需的名称-值对
triggerOutputs()['查询']['名字']
triggerOutputs()['查询']['姓氏']
triggerOutputs()['查询']['FaveColor']
  • 错误陷阱初始化:如果缺少任何所需的名称-值对,以下内容足以捕获所需的名称-值对而不会引发错误(无错误捕获)
triggerOutputs()['queries']?['FirstName']
triggerOutputs()['queries']?['LastName']
triggerOutputs()['queries']?['FaveColor']
  • 带有默认值的错误陷阱初始化:以下足以错误陷阱初始化所需的名称-值对,并为任何缺失值提供默认值
合并(触发输出()['查询']?['名字'],'Puomer')
合并(触发输出()['查询']?['姓氏'],'Puimpson')
合并(触发输出()['查询']?['FaveColor'],'紫色')

解决方案重构

  • 因此,原始解决方案可以重构如下
## 前
@triggerOutputs()['查询']['SelectedData']

## 后
@{coalesce(triggerOutputs()['queries']?['SelectedData'] , '__blank__')}
  • 这种方法可以满足典型用例的要求,即:
    • 获取值(如果存在),
    • 否则提供默认值,并且
    • 如果参数被完全省略,不要使整个逻辑应用程序崩溃
    • 如果您直接编辑工作流定义语言,则可以使用该@{}语法,但如果您在“表达式对话框”中输入,则不能

也可以看看

于 2020-06-25T12:29:19.023 回答
0

我将查询字符串发送为:

https://prod-17.westindia.logic.azure.com:443/workflows/f3b63b086e61420e8d76b7478f4b3e39/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig= nESqZWY2NyAKKhCkaM0VnfenHuTqi1NSBjJdl9M5jNA&UserName=SecretName&Password=Nikita@123

我想在逻辑应用程序中提取用户名。为此,我使用了 Compose 连接器并在表达式中使用以下语句。

合并(触发器输出()['查询']?['用户名'],'空白')

我试过这个:: triggerOutputs()['queries']?['UserName']

但是我在输出中的 UserName 前面附加了一个空格。因此,即使 UserName 是正确的,我的条件也会变得错误。

如何删除不需要附加到前面的额外空间。 在此处输入图像描述

HTTP 连接器输出为: 在此处输入图像描述

于 2021-07-01T20:30:00.277 回答