Context
- MSFT Azure Logicapp
- MSFT Logicapp workflow definition language
- Live version as of 2020-06-25 04:56:31
Problem
- Logicapp developer wants to obtain the value of a URL query parameter passed in via HTTP GET
Solution
- The solution to this use-case is already provided elsewhere in this StackOverflow thread
- This addon answer, however, refactors the previous solution
- it addresses constructing expressions in MSFT Workflow definition language (the JSON-based source code you see when viewing a logicapp in "code" view)
Details
- This URL extends the original question and another answer in this SO Thread
- Here we expect
FirstName
LastName
and FaveColor
properties
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=
- Standard init: The following is sufficient to capture the desired name-value pairs
triggerOutputs()['queries']['FirstName']
triggerOutputs()['queries']['LastName']
triggerOutputs()['queries']['FaveColor']
- Error-trap init: The following is sufficient to capture the desired name-value pairs without throwing an error if any desired name-value pair is missing (error-free capture)
triggerOutputs()['queries']?['FirstName']
triggerOutputs()['queries']?['LastName']
triggerOutputs()['queries']?['FaveColor']
- Error-trap init with defaults: The following is sufficient to error-trap init the desired name-value pairs, as well as provide a default value for any missing values
coalesce(triggerOutputs()['queries']?['FirstName'] , 'Puomer' )
coalesce(triggerOutputs()['queries']?['LastName'] , 'Puimpson' )
coalesce(triggerOutputs()['queries']?['FaveColor'] , 'Purple' )
Solution refactored
- Consequently, the original solution can be refactored as follows
@{coalesce(triggerOutputs()['queries']?['SelectedData'] , '__blank__')}
- This approach does what the typical use-case calls for, which is:
- get the value if it exists,
- otherwise provide a default value, and
- don't crash the entire logicapp if the parameter was completely omitted
- the
@{}
syntax can be used if you are editing workflow definition language directly, but not if you are entering it in the "expression dialog box"
See also
- https://stackoverflow.com/a/51058306/42223
- How to do a 'null' check in 'if' condition action of Azure Logic App
- https://docs.microsoft.com/en-us/azure/logic-apps/workflow-definition-language-functions-reference#coalesce