> For the complete documentation index, see [llms.txt](https://docs.apidrag.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.apidrag.com/base-control/controls/loop.md).

# Loop

## 아이템 블록

설정한 조건에 따라 반복구간을 반복하고, 조건을 완료하면 반복구간 밖으로 나와서 다음 Flow를 수행합니다.

<figure><img src="https://1316000475-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqYk0i8X9mEtmaB9dGSVq%2Fuploads%2FBgRkcLseLw47JVMdTsC1%2F00026.jpg?alt=media&amp;token=52949bf9-c482-496a-9b5d-e3ed3a4b1e01" alt=""><figcaption></figcaption></figure>

위 아이템 블록의 오른쪽 사각형 포인트 중 **세모 아이콘**은 **반복구간**으로의 Flow 진입 연결이 되고, **사각형 아이콘**은 반복구간의 **수행이 완료**되면 연결되는 Flow 입니다.

## 설정 팝업

<figure><img src="https://1316000475-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqYk0i8X9mEtmaB9dGSVq%2Fuploads%2FyYjCNF1DrfzzlsFLfNjB%2F00027.jpg?alt=media&amp;token=0b3f1987-9206-4fe5-a1a9-a0eb73d81c43" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1316000475-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqYk0i8X9mEtmaB9dGSVq%2Fuploads%2FBsXgwkZkjjKObvVhYtTi%2F00028.jpg?alt=media&amp;token=48196a70-5183-4f97-8622-cce4cc01d338" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1316000475-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqYk0i8X9mEtmaB9dGSVq%2Fuploads%2F4TabUeniVd2YmoBvpjEd%2F00029.jpg?alt=media&amp;token=c4ebeb09-376f-4e15-b86f-e5d6f9b003b6" alt=""><figcaption></figcaption></figure>

## 설정 필드

### <mark style="color:blue;">반복방식 : 횟수</mark>

반복횟수를 지정하여 고정 된 횟수를 반복하는 옵션입니다.

#### index 초기값

반복을 하면서 index 가 loop 의 파라미터로 전달이 되는데, index가 횟수를 반복 할 수록 증가됩니다. index 가 증가하기 위한 최초 값을 설정합니다. 사용자의 필요에 따라 설정하면 됩니다.

#### index 증가값

Loop 아이템 블록이 1회 반복할때 마다 증가시켜 줄 index 의 값입니다.

#### 반복횟수

Loop 아이템 블록의 반복 횟수를 지정합니다.

### <mark style="color:blue;">반복방식 : 조건</mark>

조건이 만족하는 경우에 계속 Loop 아이템 블록을 벗어나지 않고 Flow를 수행합니다.

#### 검증할 필드

검증 되어야 할 값을 설정해 줍니다.&#x20;

선택 항목은 **global, msg, loop, 코드입력** 중 선택할 수 있습니다.

#### 검증조건

검증 할 필드의 값이 어떤 조건인지를 확인하는 필드 입니다.&#x20;

#### 비교부호

\== : 검증 할 필드와 검증조건이 같은 값

!= : 검증 할 필드와 검증조건이 다른 값

\=> : 검증 할 필드의 값이 검증조건과 같거나 큰 경우

\=< : 검증 할 필드의 값이 검증조건과 같거나 작은 경우

\> : 검증 할 필드의 값이 검증조건의 값 보다 큰 경우

< : 검증 할 필드의 값이 검증조건의 값 보다 작은 경우

has key : 검증 할 필드의 Object안에 검증조건에서 제시한 키가 존재하는 경우

is between : 검증 할 필드의 값이 검증조건 값의 사이에 존재하는 경우

contains : 검증 할 필드의 Object 안에 검증조건에서 제시한 값이 존재하는 경우

match regex : 검증 할 필드의 값이 검증조건에서 제공한 정규 표현식에 일치하는 경우

is true : 검증 할 필드의 값이 true 인 경우

is false : 검증 할 필드의 값이 false 인 경우

is null : 검증 할 필드가 null 인 경우

is not null : 검증 할 필드가 null 이 아닌 경우

is type of :  검증 할 필드 값의 타입이 검증조건에서 제공한 타입과 일치하는 경우

is empty : 검증 할 필드의 Object 가 비어있는 경우

is not empty : 검증 할 필드의 Object 가 비어있지 않은 경우

#### 최대 반복 횟수

조건검증의 방식은 조건이 만족하는 경우 Loop 아이템 블록을 벗어나지 않기 때문에, Flow 가 무한 반복되는 문제가 발생할 수 있습니다. 이러한 오류를 방지하고자 최대 반복 횟수를 설정합니다. 기본값은 10으로 등록되며, 사용자의 상황에 맞추어 적당한 값을 등록하면 됩니다.

#### 조건검증 위치

조건 검증의 방식에 따라 조건검증을 먼저 수행하고 구간 수행을 하는 경우와, 무조건 구간을 진입하여 수행을 한 뒤에 조건을 검증하는 방식이 있습니다.&#x20;

### <mark style="color:blue;">반복방식 : 배열</mark>

#### 반복대상 아이템

배열이나 Map 타입의 Object가 제공되면, 해당 Object 내부의 요소들을 반복구간으로 하나씩 전달합니다.

### 반복구간 전송 데이터

#### Original payload

Loop 아이템 블록 앞의 Flow 에서 만들어진 payload 를 전달합니다.

#### index

반복구간에서 증가하는 index 값을 전달합니다.

#### key

반복방식이 배열인 경우에만 전달이 가능합니다. 전달하는 Object 의 타입이 Map 이면 key가 전달되지만, 배열인 경우에는 배열의 index 값이 전달됩니다.

#### value

반복방식이 배열인 경우에만 전달이 가능합니다. 전달하는 Object의 값을 전달합니다.
