Как получить параметры запроса в приложении логики?
Я пытаюсь передать дополнительный параметр запроса в приложение логики 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.
Найдите ошибку здесь
3 ответа
Во-первых, вам нужно добавить параметры запроса к существующим, например,
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, чтобы получить параметр запроса.
НТН
Контекст
- MSFT Azure Logicapp
- Язык определения рабочего процесса MSFT Logicapp
- Живая версия от 25.06.2020 04:56:31
Проблема
- Разработчик Logicapp хочет получить значение параметра запроса URL, переданного через HTTP GET.
Решение
- Решение для этого варианта использования уже предоставлено в другом месте в этом потоке Stackru.
- Этот ответ дополнения, однако, реорганизует предыдущее решение.
- он обращается к построению выражений на языке определения рабочего процесса MSFT (исходный код на основе JSON, который вы видите при просмотре logicapp в представлении "код")
Детали
- Этот URL-адрес расширяет исходный вопрос и еще один ответ в этой теме SO
- Здесь мы ожидаем
FirstName
LastName
а такжеFaveColor
свойства
https://xyz.logic.azure.com:443/workflows/id/triggers/manual/paths/invoke?api-version=2016-10-01 & sp =%2Ftriggers%2F вручную%2Frun &sv=1.0 & sig = код & FirstName = Huomer & LastName = Хуимпсон &FaveColor=
- Стандартный запуск: следующего достаточно для захвата желаемых пар имя-значение
triggerOutputs()['запросы']['Имя'] triggerOutputs()['запросы']['Фамилия'] triggerOutputs()['запросы']['FaveColor']
- Инициализация ловушки ошибок: следующего достаточно для захвата желаемых пар имя-значение без выдачи ошибки, если какая-либо желаемая пара имя-значение отсутствует (безошибочный захват)
triggerOutputs()['запросы']? ['FirstName'] triggerOutputs()['запросы']? ['LastName'] triggerOutputs()['запросы']?['FaveColor']
- Инициализация ловушки ошибок со значениями по умолчанию: следующего достаточно для ловушки ошибок инициализации требуемых пар имя-значение, а также для предоставления значения по умолчанию для любых отсутствующих значений
coalesce(triggerOutputs()['запросы']? ['FirstName'], 'Puomer') coalesce(triggerOutputs()['запросы']? ['LastName'], 'Puimpson') coalesce(triggerOutputs()['запросы']?['FaveColor'], 'Purple')
Реорганизация решения
- Следовательно, исходное решение можно рефакторировать следующим образом
@{coalesce(triggerOutputs()['запросы']?['SelectedData'], '__blank__')}
- Этот подход делает то, что требует типичный вариант использования, а именно:
- получить значение, если оно существует,
- в противном случае укажите значение по умолчанию и
- не сбой всего logicapp, если параметр был полностью опущен
- то
@{}
синтаксис можно использовать, если вы редактируете язык определения рабочего процесса напрямую, но не вводите его в "диалоговом окне выражения".
Смотрите также
Я отправляю строку запроса как:
Я хочу извлечь UserName в приложении логики. Для этого я использовал соединитель Compose и использовал следующий оператор в выражении.
coalesce(triggerOutputs()['запросы']?['UserName'], 'blank')
Я пробовал это для :: triggerOutputs()['запросы']?['UserName']
Но я получаю одно пустое пространство, добавленное перед именем пользователя в выводе. Из-за этого мое условие становится ложным, даже если имя пользователя правильное.
Как убрать лишнее пространство, которое не нужно добавлять впереди.