如何在Logic App中获取查询参数?

时间:2018-06-25 17:08:01

标签: azure azure-logic-apps

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

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

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

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

我没有获得selectedData值。我需要使用解码组件URI,然后使用JSON值。

Azure logic app schema

在此处查找错误

Azure logic app run time error

3 个答案:

答案 0 :(得分:1)

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

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"

然后,您应该可以使用

将它们添加到Logic App中
@triggerOutputs()['queries']['SelectedData']

如您所见,无需将模式添加到Http触发器即可获取查询参数。

HTH

答案 1 :(得分:1)

上下文

  • MSFT Azure Logicapp
  • MSFT Logicapp工作流程定义语言
  • 截至2020-06-25 04:56:31的实时版本

问题

  • Logicapp开发人员希望获取通过HTTP GET传递的URL查询参数的值

解决方案

  • 此用例的解决方案是此StackOverflow线程中的already provided elsewhere
  • 此插件答案可重构先前的解决方案
    • 它解决了用MSFT Workflow定义语言(在“代码”视图中查看逻辑应用程序时看到的基于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=code
      &FirstName=Huomer
      &LastName=Huimpson
      &FaveColor=     
  • 标准初始化:以下内容足以捕获所需的名称/值对
triggerOutputs()['queries']['FirstName']
triggerOutputs()['queries']['LastName']
triggerOutputs()['queries']['FaveColor']
  • 错误陷阱初始化:以下内容足以捕获所需的名称-值对 ,如果缺少任何所需的名称-值对,则不会引发错误(错误-免费捕获)
triggerOutputs()['queries']?['FirstName']
triggerOutputs()['queries']?['LastName']
triggerOutputs()['queries']?['FaveColor']
  • 具有默认设置的错误陷阱初始化:以下内容足以对所需的名称/值对进行错误陷阱初始化,并为所有缺少的名称提供默认值
coalesce(triggerOutputs()['queries']?['FirstName']  , 'Puomer'  )
coalesce(triggerOutputs()['queries']?['LastName']   , 'Puimpson' )
coalesce(triggerOutputs()['queries']?['FaveColor']  , 'Purple' )

重构解决方案

  • 因此,原始解决方案可以按如下方式重构
@{coalesce(triggerOutputs()['queries']?['SelectedData'] , '__blank__')}
  • 此方法完成了典型用例的要求,即:
    • 获取值(如果存在)
    • 否则提供默认值,并且
    • 如果参数被完全省略,请勿使整个逻辑应用程序崩溃
    • 如果您直接编辑工作流程定义语言,则可以使用@{}语法,但是如果您在“表达式对话框”中输入它,则不能使用该语法。

另请参见

答案 2 :(得分: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 连接器并在表达式中使用了以下语句。

coalesce(triggerOutputs()['queries']?['UserName'] , '空白')

我已经尝试过:triggerOutputs()['queries']?['UserName']

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

如何删除不必要的附加到前面的额外空间。 enter image description here

HTTP 连接器输出为: enter image description here