Обработка ответов API об успехах и ошибках в рабочем процессе Logic Apps

Я создаю рабочий процесс Logic Apps, и мне нужно обрабатывать два разных типа ответов, возвращаемых третьей службой API, используя условие if.

Ответ API в случае, если API способен правильно обрабатывать данные, выглядит примерно так:

{ "Key": “AA11-AA11-AA11-AA11", "Geocode":true, "Addresses": [ { "Address":"", "Address1":"Sageweg 27", "Address2":"Neuenburg", "Address3":"", "Address4":"" }, { "Address":"", "Address1":"Schubartstr. 111", "Address2":"Bietigheim-Bissingen", "Address3":"74321", "Address4":"" } ] }

а в случае «ошибки» выглядит так:

{ "Number": 18, "Description": "Missing or invalid parameters", "Cause": "A required parameter was not supplied of the value of a parameter cannnot be converted into the right type.", "Resolution": "Check the parameters passed and their values against the specification for this service." }

где 18 — это лишь один из возможных сценариев ошибок.

Как я могу настроить рабочий процесс с точки зрения действий и, следовательно, условия If, чтобы различать успешный ответ и ответ «ошибка»?

Это то, что у меня есть до сих пор.

Я пытался создать 2 действия Parse JSON, параллельно управляя сценариями успеха и ошибки, но рабочий процесс занимает много времени, и мне также было сложно справиться с тем фактом, что в сценарии успеха ответ представляет собой массив. , а в ошибке это объект, а также не все поля являются необязательными, поэтому мне это решение показалось не самым чистым.

Заранее спасибо!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
83
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете обрабатывать ответы об успехе или сбое, как показано ниже:

  • В целях тестирования я вручную отправляю полезные данные об успехе и сбое при вызове рабочего процесса.
  • Здесь я создал комбинированную схему для успешных и неудачных ответов, которая используется в действии Parse JSON.

{
    "properties": {
        "Addresses": {
            "items": {
                "properties": {
                    "Address": {
                        "type": "string"
                    },
                    "Address1": {
                        "type": "string"
                    },
                    "Address2": {
                        "type": "string"
                    },
                    "Address3": {
                        "type": "string"
                    },
                    "Address4": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "type": "array"
        },
        "Cause": {
            "type": "string"
        },
        "Description": {
            "type": "string"
        },
        "Geocode": {
            "type": "boolean"
        },
        "Key": {
            "type": "string"
        },
        "Number": {
            "type": "integer"
        },
        "Resolution": {
            "type": "string"
        }
    },
    "type": "object"
}
  • В действии «Условие» я проверяю, является ли свойство Key нулевым или нет. Вы можете использовать любое свойство, уникальное по полезной нагрузке успеха и неудачи.

  • С этой конфигурацией я могу получить ожидаемый ответ.

Успех-

Отказ-

Спасибо за Ваш ответ. Я последовал вашему комментарию, поэтому анализирую только ответ об ошибке и добавляю проверку в условии, чтобы увидеть, равен ли Number нулю. Итак, если это так, я могу продолжить обработку данных. Это работает нормально, когда я получаю полезную информацию об ошибке, но как только конечная точка API сможет обработать данные и вернет обратно полезную информацию об успешном выполнении, условие проверки не выполняется, поскольку она не может найти поле, указанное в выражении. Я использую выражение body(<whatever>)?['body']['Number'], которое, опять же, отлично работает со сценарием полезной нагрузки «ошибка».

Francesco 14.03.2024 12:11

Не следует использовать тело дважды, если вы извлекаете свойство Number из действия Parse_JSON. Вы можете присвоить значение того же выражения переменной и проверить, какой вывод вы получите в случае успешного ответа. Таким образом, вы можете определить, почему полезная нагрузка не работает.

Ikhtesam Afrin 14.03.2024 12:15

Проверьте значение одного и того же выражения в обоих сценариях, используя переменную, и вы поймете проблему.

Ikhtesam Afrin 14.03.2024 12:18

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

Свойства JSON в массив (все ли задания выполнены)
Приложение логики не может получить доступ к хранилищу BLOB-объектов, получая 403
Третья сторона вызывает наш API, который запускает приложение логики. Как мы можем обрабатывать нумерацию страниц файла JSON, созданного хранимой процедурой SQL в приложении логики?
Доступ к частному веб-сайту с помощью самозаверяющего сертификата в стандартном приложении логики в Azure (размещенном в WS1 ASP)
Azure Logic Apps: как получать уведомления в случае разрыва или сбоя соединения действия приложения логики
Проблема с циклическим выполнением запроса SQL Server в приложении Azure Logic
Невозможно получить токен аутентификации AAD в Logic Apps
Невозможно прочитать дату и время из листа Excel с помощью Azure Logic Apps
Правильный формат для списка ресурсов по подписке. Поле фильтра соединителя приложения логики Azure
Как бороться с динамической вложенной полезной нагрузкой JSON?