콘텐츠로 이동

REST 요청 단계

REST 요청 단계는 워크플로의 한 단계로 REST API를 호출합니다. “구성 → 전송 → 검사”로 이어지는 전체 과정을 Postman 방식의 단일 단계로 처리합니다. 엔드포인트를 직접 입력하거나 Postman 컬렉션, OpenAPI/Swagger 사양, HAR 캡처에서 가져와 선택하고, 헤더, 쿼리 매개변수, 본문을 설정한 다음 테스트 요청을 보내 실제 응답을 확인하고 단계를 저장합니다.

응답을 보낼 위치는 직접 선택합니다. 기본적으로 응답은 테이블로 파싱됩니다. 또는 단계가 응답을 워크플로 변수에 캡처하여, 이후 단계가 상태 코드에 따라 분기하거나 본문에서 값을 읽을 수 있게 할 수 있습니다.

저장하기 전에 브라우저를 닫거나 다시 로드하면 편집기는 해당 브라우저에 로컬 초안을 유지합니다. 같은 단계를 다시 열고 안내가 표시되면 복원을 선택하여 저장되지 않은 요청 설정을 복구하십시오.

일반적으로 서비스의 기본 URL과 인증 정보를 보관하는 REST 유형의 연결이 필요합니다. 연결 없이 정규화된 전체 URL을 직접 호출할 수도 있습니다. REST 연결을 참조하십시오.

  1. 워크플로를 열고 원하는 위치에 단계를 추가합니다.
  2. 단계 유형으로 REST Request (unified) 옵션을 선택합니다(REST 단계 아래에 있습니다). 편집기가 요청 탭, 응답 탭, 테이블 데이터 선택 탭과 함께 열립니다.

요청 탭에서 다음을 설정합니다.

엔드포인트를 제공할 방법을 선택하면 PlaidCloud가 요청을 대신 채워 줍니다.

  • 수동: 메서드와 URL을 직접 입력합니다.
  • 연결의 API 정의에서: 선택한 연결에 저장된 OpenAPI/Swagger 정의를 사용하므로 모든 단계에서 반복해서 입력하지 않아도 됩니다. 아래의 연결의 API 정의 재사용을 참조하십시오.
  • Postman 컬렉션(파일) / Postman 컬렉션(URL): Postman 컬렉션에서 가져옵니다.
  • OpenAPI / Swagger(URL) / OpenAPI / Swagger(파일): API 사양에서 가져옵니다.
  • HAR 아카이브(파일): 브라우저의 네트워크 로그에서 캡처한 요청을 가져옵니다.

가져온 소스의 경우 카탈로그 로드를 선택하여 사용 가능한 엔드포인트를 나열한 다음 엔드포인트에서 하나를 선택합니다. 단계는 각 매개변수의 예시 값이나 기본값을 사용하여 메서드, URL, 헤더, 쿼리 매개변수, 본문을 채웁니다. 예시 값도 기본값도 없는 선택적 매개변수는 꺼진 상태로 시작합니다. 요청에 이미 입력한 내용이 있으면 단계가 교체하기 전에 확인합니다. 필드에 입력 중이 아닐 때 Ctrl+Z(Mac에서는 Cmd+Z)를 누르거나 교체 실행 취소를 선택하면 이전 요청이 복원됩니다.

큰 카탈로그도 쉽게 좁힐 수 있습니다. 메서드, 경로 또는 이름으로 필터링… 입력란에 입력하면 일치하는 엔드포인트만 나열됩니다. 카탈로그에는 포함된 엔드포인트 수(필터링 중에는 12 of 340)와 로드된 시각이 표시되며, 매우 큰 정의가 미리 보기 제한에서 잘린 경우 단계가 이를 알려 줍니다.

파일을 선택하는 대신 컬렉션 또는 사양 붙여넣기

섹션 제목: “파일을 선택하는 대신 컬렉션 또는 사양 붙여넣기”

파일 기반 소스 세 가지(Postman 컬렉션, OpenAPI/Swagger, HAR 아카이브)에는 모두 파일 선택기 옆에 붙여넣기… 버튼이 있습니다. 내용은 가지고 있지만 Document에 저장하지 않은 경우에 사용합니다. JSON을 붙여넣고 사용을 선택하면 됩니다. 카탈로그가 바로 로드되므로 이후에 카탈로그 로드를 클릭할 필요가 없습니다.

붙여넣은 내용은 파일 선택기 대신 사용되며 단계가 열려 있는 동안만 유지됩니다. 단계와 함께 저장되지 않으므로, 단계를 다시 열어 그 내용으로 카탈로그를 다시 로드하려면 다시 붙여넣으십시오. 같은 소스에 파일을 선택하면 파일이 우선하고 붙여넣은 내용은 폐기되며, 이 경우 단계가 알려 줍니다.

.json 파일을 소스 선택기에 끌어다 놓을 수도 있습니다. 단계는 선택한 소스에 맞게 내용을 확인하고 문제를 알려 줍니다. 예를 들어 OpenAPI 사양이 필요한 곳에 Postman 컬렉션을 붙여넣었거나 JSON이 아닌 파일인 경우가 해당합니다. 각 소스에는 Postman 컬렉션, OpenAPI 사양 또는 HAR 파일을 내보내는 방법을 설명하는 How do I get a …? 링크가 있습니다.

특정 서비스를 위해 만들어진 커넥터는 이미 해당 엔드포인트를 알고 있습니다. 일반 REST 연결과 MuleSoft 연결은 모든 API를 가리킬 수 있으므로 그렇지 않습니다. 대신 API 정의를 연결 자체에 첨부할 수 있습니다.

연결에서 한 번 설정하고(일반 REST 연결 참조), 해당 연결을 사용하는 모든 단계에서 다음을 수행합니다.

  1. 연결에서 연결을 선택합니다.
  2. 엔드포인트 소스를 연결의 API 정의에서로 설정합니다.
  3. 카탈로그 로드를 선택하고 엔드포인트를 선택합니다.

해당 연결을 공유하는 모든 단계에서 같은 엔드포인트 목록을 제공하며, 연결에서 정의를 업데이트하면 모두 함께 업데이트됩니다.

연결 선택기 아래의 요약 줄에는 단계가 사용할 내용이 표시됩니다. 인증 유형, 호스트, 연결이 모든 요청과 함께 보내는 기본 헤더 수가 포함됩니다. 연결을 변경한 후 선택기 옆의 새로 고침 버튼을 선택하면 단계를 다시 열지 않고도 인증, 호스트, 기본 헤더를 다시 로드합니다. 연결에 환경이 정의되어 있으면 환경 선택기에서 단계를 실행할 환경을 선택합니다.

  • 연결: 인증에 사용할 REST 연결입니다. 설정하지 않으면 정규화된 전체 URL을 직접 호출합니다. 선택기 옆의 편집 바로 가기를 사용하면 요청 편집기를 벗어나지 않고 선택한 연결을 보거나 편집할 수 있습니다.
  • 메서드: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS 중 하나입니다.
  • 엔드포인트: 경로(연결이 설정된 경우) 또는 전체 URL입니다.
  • 헤더와 쿼리 매개변수는 이름/값 행으로 구성된 편집 가능한 테이블이며, 각 행에는 사용 토글과 설명이 있습니다. 추가로 행을 추가하고 제거로 삭제합니다.
  • 본문에는 요청 페이로드(JSON, 양식 또는 원시)가 코드 편집기에 들어 있습니다.

JSON 서식 지정은 본문을 들여쓰고, JSON 유효성 검사는 본문을 검사하여 오류의 줄과 열을 보고합니다. 두 기능 모두 각 {{…}} 변수를 값으로 읽으므로 변수는 작성한 그대로 유지됩니다. 변수 참조… 버튼은 요청에서 사용할 수 있는 모든 변수를 나열하고, 삽입 {{…}} 은 커서 위치에 변수를 넣습니다.

편집하는 동안 단계는 요청 아래에 문제를 표시합니다.

  • 이름이 두 번 나타나는 헤더 또는 쿼리 매개변수. 하나의 값이 손실됩니다.
  • 철자가 잘못된 것으로 보이는 헤더 이름. Authorization 대신 Authorisation을 쓴 경우처럼 Did you mean… 제안이 함께 표시됩니다.
  • Authorization 또는 X-API-Key 값 같은 비밀 값을 일반 텍스트로 입력한 경우. 프로젝트 변수에 보관하고 {{project_var.NAME}}을 작성하면 비밀 값이 단계에 저장되지 않습니다.
  • Content-Type: application/json 헤더가 없는 JSON 본문. 일부 서버는 HTTP 415로 거부합니다.
  • 스킴 철자가 잘못되었거나, 경로에 이중 슬래시가 있거나, 후행 슬래시가 있거나, 불필요한 공백이 있는 URL

엔드포인트, 헤더, 쿼리 값, 본문 어디에서나 변수 이름을 이중 중괄호로 감싸 {{name}} 형식으로 쓰면 실행 시점에 변수를 삽입할 수 있습니다. 워크플로 실행 변수는 {{var.name}}, 프로젝트 변수는 {{project_var.name}}으로 쓸 수도 있습니다. 접두사는 선택 사항이며 둘 다 같은 이름으로 확인됩니다.

편집기는 엔드포인트, 헤더 및 쿼리 테이블, 본문 편집기에서 감지된 {{...}} 토큰을 강조 표시하므로 테스트하거나 저장하기 전에 치환을 쉽게 확인할 수 있습니다.

이중 중괄호만 치환되므로 JSON 본문의 단일 { 또는 }는 작성한 그대로 유지됩니다. 따라서 {"id": "{{var.order_id}}", "qty": 1}처럼 JSON에 변수를 자유롭게 섞어 쓸 수 있습니다. 알 수 없는 변수 이름은 단계를 실패시키므로 오타가 즉시 드러납니다.

센서 또는 웹훅이 워크플로를 시작하는 경우 네 가지 트리거 변수도 사용할 수 있습니다. {{trigger_sensor_id}}, {{trigger_sensor_type}}, {{trigger_fired_at}}, {{trigger_payload_json}}(JSON 문자열로 된 수신 페이로드이며, 중첩된 필드에 접근하려면 이후 단계에서 파싱)입니다. 수동 실행 또는 예약 실행에서는 빈 문자열로 확인됩니다.

  • 테스트 요청 보내기는 현재 설정으로 요청을 보내고 실제 응답을 인라인으로 표시하므로 저장하기 전에 호출이 작동하는지 확인할 수 있습니다. 양식 어디에서나 Ctrl+Enter(Mac에서는 Cmd+Enter)를 눌러 보낼 수 있습니다. 상태 줄에는 HTTP 상태와 응답 시간이 표시되며, 요청이 진행되는 동안 타이머가 증가합니다. (이 기능은 단일 요청을 보냅니다. 페이징은 단계가 실행될 때만 수행됩니다.)
  • 페이징 테스트는 구성된 페이징을 따라가며 여러 페이지에 걸쳐 반환되는 레코드 수(미리 보기 상한까지)를 보고하므로, 전체 실행 전에 페이징 모드와 해당 매개변수/경로가 올바르게 연결되는지 확인할 수 있습니다. 상한에 도달하는 데 필요한 만큼의 페이지만 호출됩니다.
  • curl로 복사는 공유하거나 디버깅할 수 있도록 동등한 curl 명령을 클립보드에 복사합니다(비밀 값은 마스킹됨).
  • curl에서 가져오기는 그 반대입니다. 브라우저의 “Copy as cURL” 같은 curl 명령을 붙여넣으면 해당 메서드, URL, 헤더, 본문이 현재 요청을 대체합니다. 기본 인증(-u)은 Authorization 헤더가 되며, 지원되지 않는 옵션은 조용히 버려지지 않고 보고됩니다. 이전 값을 복원하려면 교체 실행 취소를 사용합니다.

응답은 보기 좋게 보기와 압축 보기가 있는 뷰어에서 열립니다. 단계가 열려 있는 동안 최근 테스트 결과 5개가 유지되며, 하나를 선택해 다시 보거나 다시 실행할 수 있습니다. 응답에 레코드 목록이 있으면 제안이 항목 경로를 처음 찾은 목록으로 설정합니다.

요청 미리 보기 그룹은 변수가 확인되고 비밀 값이 마스킹된 상태로, 실행 시 보낼 요청을 그대로 보여 주며 아무것도 보내지 않습니다. 편집한 후에는 미리 보기 새로 고침을 선택합니다.

테스트 요청 보내기에 성공하기 전에 아웃바운드 요청 필드를 변경하고 저장하면 PlaidCloud가 테스트에 성공하지 않고 저장하시겠습니까? 라고 묻고, 그래도 저장을 선택하거나 돌아갈 수 있습니다. 팬아웃 모드에서는 1행 테스트를 사용하여 저장하기 전에 첫 번째 드라이버 행을 테스트합니다.

응답 탭에서 응답 대상을 설정합니다.

응답은 대상 테이블로 파싱되며, 이 모드에서는 대상 테이블이 필수입니다. 기존 테이블을 선택하거나 선택기에서 새로 만들 수 있으며 뷰는 제공되지 않습니다. 페이징 및 파싱 그룹이 방식을 제어합니다.

  • 행 형식: 각 레코드가 JSON 개체이면 개체(기본값), 각 레코드가 값의 목록이면 배열입니다. 테이블 행당 요청 1회에서는 배열을 사용할 수 없습니다. 항목 경로는 응답 안에서 레코드가 있는 위치를 지정합니다.

  • 페이징 모드: 페이징 없음(기본값), 오프셋 페이징, 페이지 번호 페이징, 다음 페이지 URL 페이징, 커서 페이징, Link 헤더 페이징(RFC 5988) 옵션이 있습니다. 모드 매개변수와 모드 경로는 페이징을 구동하는 매개변수와 응답 필드를 지정하며, 페이징 모드를 선택한 경우에만 사용할 수 있습니다. 모드를 선택하면 두 항목이 모두 기본값으로 채워지며 편집할 수 있습니다.

    모드 모드 매개변수 기본값 모드 경로 기본값 페이징 방식
    오프셋 {"offset": "offset", "limit": "limit"} {"has_more": ["has_more"]} 오프셋 및 제한 쿼리 매개변수를 보내고, 응답의 has_more가 true인 동안 계속 읽습니다.
    페이지 번호 {"offset": "page"} {"has_more": ["has_more"]} page 매개변수로 페이지 번호를 보내며 제한은 보내지 않습니다.
    다음 페이지 URL {} {"next": ["next"]} 각 응답의 next 경로에서 찾은 URL을 요청합니다. 상대 URL은 해당 URL이 나온 페이지를 기준으로 해석합니다.
    커서 {"cursor": "after"} {"has_more": ["has_more"], "cursor": ["next_cursor"]} 이전 응답의 커서를 after 매개변수로 보냅니다. 요청 헤더나 본문 필드로 대신 보내려면 모드 매개변수에 "send_as": "header" 또는 "send_as": "body_field"를 추가합니다. Azure Cosmos DB가 보내는 x-ms-continuation 헤더처럼 응답 헤더에서 커서를 읽으려면 모드 경로의 has_more와 cursor 대신 "token_header": "x-ms-continuation"을 넣으며, 마지막 페이지는 해당 헤더가 없는 페이지입니다.
    Link 헤더 {"rel": "next"} {} rel로 지정된 이름의 Link 응답 헤더 관계를 따라갑니다.

    오프셋과 페이지 번호는 모드 매개변수에서 더 많은 키를 허용합니다. start는 첫 번째 오프셋 또는 페이지 번호(기본값 0)이고, stop_on_empty는 항목 경로에 레코드가 없는 첫 페이지에서 중지하므로 응답에 has_more 필드가 필요하지 않으며, send_limit는 limit 매개변수를 보낼지 여부(오프셋은 기본값 true, 페이지 번호는 false)를 지정합니다.

  • 행을 파싱하는 대신 원시 JSON 덤프: 페이로드를 열로 파싱하지 않고 원시 상태로 저장합니다.

  • 재시도 횟수(0100)와 제한 시간(초)(1600): 실패 시 요청의 동작 방식과 요청이 실행될 수 있는 시간입니다. 실행은 설정한 제한 시간까지 기다리며, 테스트 요청 보내기, 1행 테스트, 페이징 테스트는 최대 300초까지 기다립니다. 재시도는 멱등 메서드(GET, HEAD, OPTIONS, DELETE)에 대한 연결 실패, 서버 오류(5xx), 속도 제한(HTTP 429)에 적용됩니다. POST, PUT, PATCH는 서버가 아무 작업도 하지 않았음을 알려 주는 속도 제한(HTTP 429) 응답 후에만 재시도되며 서버 오류 후에는 재시도되지 않으므로, 서버가 이미 처리했을 수 있는 비멱등 요청 본문이 두 번 전송되는 일은 없습니다. API가 Retry-After 헤더를 반환하면 단계는 재시도 전에 요청된 간격(최대 2분)만큼 기다립니다.

테이블 데이터 선택 탭은 응답의 필드를 대상 테이블의 열에 매핑합니다. 소스 검사 → Populate는 실제 응답에서 매핑을 채웁니다. 실행할 때와 마찬가지로 연결을 통해 단계의 요청을 보냅니다. 연결이 필요하며, 메서드가 GET, HEAD, OPTIONS 이외의 경우 먼저 확인을 요청합니다. 단계가 파싱된 응답을 대상 테이블에 바로 쓰므로 여기에서는 요약과 고유를 사용할 수 없습니다.

대상 위치를 워크플로 변수로 설정하고 변수 접두사(예: my_call 같은 일반 이름)를 지정합니다. 단계는 요청을 한 번 보내고 네 개의 워크플로 변수를 씁니다.

변수 내용
{prefix}_status HTTP 상태 코드(예: 200)입니다.
{prefix}_body 문자열로 된 응답 본문입니다(JSON 응답은 JSON 텍스트로 저장됨).
{prefix}_headers JSON 텍스트로 된 응답 헤더입니다.
{prefix}_elapsed_ms 요청에 걸린 시간(밀리초)입니다.

다른 워크플로 변수와 마찬가지로 이후 단계에서 참조합니다(예: {my_call_status}). “요청 하나를 보낸 다음 결과에 따라 분기”하는 패턴의 기본 구성 요소입니다.

테이블 행마다 요청 하나 보내기

섹션 제목: “테이블 행마다 요청 하나 보내기”

기본적으로 단계는 요청을 하나 보냅니다. 테이블의 행마다 API를 한 번씩 호출하려면(예: 테이블의 모든 고객 ID를 조회하거나 각 행을 레코드로 POST) 요청 탭에서 보내기를 테이블 행당 요청 1회로 설정합니다. 그러면 드라이버 테이블 필드가 나타납니다.

  • 드라이버 테이블: 행이 요청을 구동하는 테이블을 선택합니다. 선택기에서 워크플로의 테이블 중에서 고르거나 테이블 이름을 입력합니다. 각 행의 열은 {{row.column}} 토큰으로 사용할 수 있습니다.
  • 드라이버 필터 (선택 사항): 사용할 행을 제한하는 SQL WHERE 절입니다.
  • 키 열 (선택 사항): 모든 출력 행에 전달할 드라이버 열을 쉼표로 구분한 목록이며, 결과를 드라이버에 다시 조인할 수 있게 합니다.
  • 행 제한과 동시성: 처리할 최대 행 수와 한 번에 실행되는 요청 수입니다.
  • 초당 최대 요청 수 (선택 사항): 모든 워커에 걸쳐 요청이 시작되는 속도를 제한하여 급증이 API의 속도 제한을 건드리지 않도록 합니다(0 = 제한 없음). 값은 소수일 수 있습니다. 0.5는 2초마다 요청 하나를 시작합니다. 1000을 초과하는 값은 경고와 함께 1000으로 실행됩니다. 이 값은 동시성과 독립적입니다. 동시성은 한 번에 실행되는 요청 수를 제한하고, 초당 최대 요청 수는 새 요청이 시작되는 빈도를 조절합니다.
  • Add Idempotency-Key header (선택 사항): 행당 단일(페이징 없음) POST, PUT 또는 PATCH 요청의 경우, 각 행에서 파생된 고정 Idempotency-Key 헤더를 보내 멱등성을 지원하는 API에서 단계를 다시 실행해도 레코드가 중복 생성되지 않게 합니다(같은 행은 항상 같은 키를 보내므로 API가 반복을 제거). GET/HEAD/DELETE이거나 페이징 모드가 켜져 있으면 경고와 함께 무시됩니다. 이미 자체 Idempotency-Key를 설정한 요청은 그 값을 유지합니다.
  • 응답: 각 응답이 행이 되는 방식입니다. 파싱된 레코드(기본값)는 각 응답 레코드를 행으로 씁니다. 텍스트(요청당 한 행) 옵션은 요청당 한 행을 DownloadData와 DownloadHeaders 열로 쓰며, 실패한 요청은 제외됩니다. 원시 텍스트(오류도 행으로) 옵션도 요청당 한 행을 쓰지만 본문을 서버가 보낸 그대로 유지하고 DownloadStatus 열을 추가하며, HTTP 또는 전송 오류를 오류 본문 및 상태와 함께 행으로 유지합니다. 모든 원시 행의 본문, 헤더, 오류 텍스트에서 자격 증명이 마스킹되며, 자격 증명을 포함하는 요청에서는 다른 출처로의 리디렉션을 따르지 않습니다. 페이징은 텍스트 모드에 적용되지 않습니다. 텍스트(요청당 한 행) 옵션에서 Keep error response(keep_error_response)는 HTTP 400 이상 응답의 본문을 행을 실패시키는 대신 성공했을 때처럼 행에 쓰고, 출력에 DownloadStatus, DownloadReason, DownloadUrl 추가(response_meta)는 응답의 상태, 이유, 최종 URL을 담은 DownloadStatus, DownloadReason, DownloadUrl 열을 추가합니다. 둘 다 기본적으로 꺼져 있습니다. 단계 양식에는 출력에 DownloadStatus, DownloadReason, DownloadUrl 추가 옵션이 있으며, keep_error_response는 AI 어시스턴트 또는 REST API로 설정합니다.
  • Continue on error: 켜면 실패한 행이 기록되고 단계는 첫 번째 실패에서 중단되는 대신 경고와 함께 종료됩니다. 실행 로그에는 처음 몇 개의 실패한 행(키 열 기준)과 각각에서 발생한 오류가 표시되므로, 어떤 행이 왜 실패했는지 알 수 있습니다.

엔드포인트, 쿼리, 헤더, 본문 어디에서나 {{row.column}} 토큰을 사용하여 해당 행의 값을 치환합니다(예: GET /customers/{{row.customer_id}}). 쿼리 매개변수의 값은 한 번만 URL 인코딩되므로 서버는 A 1과 a/b를 입력한 그대로 받습니다. 이전 버전에서는 두 번 인코딩하여 서버가 A%201과 a%2Fb를 받았습니다. POST, PUT 또는 PATCH 단계에서 Add Idempotency-Key header가 켜져 있고 쿼리에 인코딩이 필요한 행 값이 있으면, 요청이 변경되었기 때문에 업그레이드 후 키가 한 번 바뀝니다. 업그레이드 시점에 걸쳐 다시 실행하면 해당하는 행마다 반복 요청이 한 번씩 전송될 수 있습니다. 문자, 숫자, -._~로만 이루어진 값은 변하지 않습니다. 각 행의 응답 레코드는 대상 테이블로 파싱되며(키 열이 앞에 추가됨), Dump raw JSON을 켜면 대신 요청당 한 행이 생성됩니다.

삽입 {{row.column}} 메뉴에는 선택한 드라이버 테이블의 열이 나열되므로, 열 이름을 직접 입력하는 대신 마지막으로 편집한 필드(엔드포인트 또는 본문)에 {{row.customer_id}} 같은 토큰을 넣을 수 있습니다. 편집하는 동안 양식은 사용한 {{row.column}} 토큰도 나열하며 드라이버 테이블의 열이 아닌 것은 빨간색으로 강조 표시하므로, 단계를 실행하기 전에 오타를 잡을 수 있습니다.

1행 테스트는 첫 번째 드라이버 행을 읽고(드라이버 필터 적용) 그 값을 엔드포인트, 쿼리, 헤더, 본문에 치환한 다음 요청 하나를 보냅니다. 따라서 모든 행에 대해 실행하기 전에 팬아웃이 올바르게 연결되었는지 확인할 수 있습니다. 응답은 테스트 요청 보내기처럼 인라인으로 표시되며, 사용된 드라이버 행의 값도 함께 표시됩니다. Preview Row 1도 마찬가지로 첫 번째 드라이버 행의 {{row.column}} 값을 확인하여 요청을 보내지 않고 확인된 요청을 표시합니다.

REST 요청 단계는 다른 단계와 마찬가지로 전체 실행의 일부로, 또는 단독으로 실행됩니다(워크플로에서 단계 하나 실행 참조). 테이블 모드에서는 파싱된(또는 원시) 응답을 대상 테이블에 쓰고, 변수 모드에서는 이후 단계가 읽을 수 있도록 네 개의 변수를 설정합니다.