Logic App До действия, как установить счетчик динамически?
У меня есть приложение логики, которое извлекает данные из конечной точки API. API использует разбиение на страницы и имеет ограничение в 50 объектов на запрос, а затем предоставляет ссылку на следующие 50 объектов, пока не получит все объекты, однако я не знаю, сколько объектов будет для каждого запроса. Мой поток кратко описан ниже:
Сначала сделайте начальный HTTP-запрос к конечной точке
Анализ тела HTTP-ответа для использования предоставленного URL-адреса nextLink.
Пока цикл с условием для выполнения, пока nextLink не станет равным нулю.
В цикле пока у меня есть действие для Set Variable, которое устанавливает для каждого запроса новый URL-адрес с новой разбивкой на страницы в конце URL-адреса: "&_offset=100"
Проблема с циклом до тех пор, пока вы не можете установить ограничения на счетчик и тайм-аут, как вы можете видеть здесь. Поскольку я не знаю, сколько будет разбиений на страницы, я ожидаю, что этот цикл будет выполняться, пока не будет выполнено указанное условие. Однако я попытался указать несколько других значений, перечисленных ниже:
Count = 1 - результат всего за 1 запуск
Count = empty - В результате он работал в течение часа (около 3300 циклов), как указано значением тайм-аута.
Count = 60 - Результат был выполнен 60 раз
Я исследовал, сколько страниц имеет этот конкретный запрос, и оказалось, что он имеет 290 страниц. Я ожидаю, что этот цикл до тех пор, пока nextLink не станет равным нулю, что будет после 290 циклов. Но мне интересно, есть ли возможность указать динамическое значение для Count в действии до?
Я ожидаю, что действие UNTIL будет выполняться столько раз, сколько необходимо, в зависимости от того, сколько существует разбиения на страницы, это, по крайней мере, то, что я полагаю, он должен делать, потому что если мне нужно указать значение того, сколько раз оно должно запускаться, тогда это действие довольно бесполезно. Надеюсь, здесь есть кто-то, кто, возможно, столкнулся с той же проблемой.
С наилучшими пожеланиями
1 ответ
Насколько мне известно, действие "Пока" требует от нас определения хотя бы одного предела для предотвращения бесконечных циклов.
Для вашей проблемы вы можете просто определить счетчик, который будет достаточно большим, чтобы ваши конечные точки отображали все страницы. Если вы хотите указать динамическое значение для счетчика, вам необходимо выполнить два условия:
Вы должны иметь доступ к общему количеству страниц (если ваша конечная точка предоставляет URL-адрес для его получения).
Счетчик, установленный в действии "До", может ссылаться только на триггерные входы, триггерные выходы и параметры.
Согласно утверждению в вашем вопросе, я полагаю, вы не можете выполнить эти два условия. Поэтому я думаю, что мы можем просто установить достаточно большое количество.