Как получить параметры запроса в приложении логики?

Я пытаюсь передать дополнительный параметр запроса в приложение логики 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

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, если параметр был полностью опущен
    • то @{} синтаксис можно использовать, если вы редактируете язык определения рабочего процесса напрямую, но не вводите его в "диалоговом окне выражения".

Смотрите также

Я отправляю строку запроса как:

https://prod-17.westindia.logic.azure.com:443/workflows/f3b63b086e61420e8d76b7478f4b3e39/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&svnESqZWY2NyAKKhCkaM0VnfenHuTqi1NSBjJdl9M5jNA& UserName = SecretName& Password = Никита @123

Я хочу извлечь UserName в приложении логики. Для этого я использовал соединитель Compose и использовал следующий оператор в выражении.

coalesce(triggerOutputs()['запросы']?['UserName'], 'blank')

Я пробовал это для :: triggerOutputs()['запросы']?['UserName']

Но я получаю одно пустое пространство, добавленное перед именем пользователя в выводе. Из-за этого мое условие становится ложным, даже если имя пользователя правильное.

Как убрать лишнее пространство, которое не нужно добавлять впереди.

Вывод HTTP-коннектора как:

Другие вопросы по тегам