Я создаю рабочий процесс 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, параллельно управляя сценариями успеха и ошибки, но рабочий процесс занимает много времени, и мне также было сложно справиться с тем фактом, что в сценарии успеха ответ представляет собой массив. , а в ошибке это объект, а также не все поля являются необязательными, поэтому мне это решение показалось не самым чистым.
Заранее спасибо!





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


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