Integrate.io의 Curl 함수에 대한 철저한 설명

< integrate.io의 블로그 기사 번역 >

HTTP 리퀘스트를 만드는 기능 외에도 integrate.io는 특정 사례에 유용한, 다양한 Curl 함수와 고급 기능을 제공합니다. 이 기사에서는 단계별 데모 외에도 Curl 함수와 기능을 소개합니다.
목차:

  1. Curl 함수는 어떤 경우에 사용합니까?
  2. Curl 함수 사용법
  3. Curl 함수와 이용 예
  4. 비교표 : Integrate.io Curl 함수 및 유스 케이스 요약
  5. 단계별 예
  6. 마지막으로

Curl 함수는 어떤 경우에 사용합니까?

integrate.io의 Curl 함수는 HTTP 요청을 실행하고 반환된 응답을 데이터 파이프라인에서 사용할 수 있습니다. Curl 기능을 사용하여 다음 중 하나를 수행할 수 있습니다.

  • 타사 API를 실행하여 데이터 검색: 이 데이터는 기존 데이터를 풍부하게 하는(새 필드 추가) 데 사용할 수 있습니다. 예를 들어, 모든 신용 등급 서비스의 API를 사용하여 고객의 신용 점수를 얻을 수 있습니다.
  • API를 실행하여 파이프라인의 데이터 필드 값 변환 : 예를 들어 FX API를 호출하여 통화 필드를 최신 비율에 따라 현지 통화로 변환할 수 있습니다.
  • 외부 API를 통해 CRUD 작업 수행: 예를 들어 CRUD 작업을 지원하는 다른 서비스의 경우 API를 통해 데이터 레코드를 만들거나 수정할 수 있습니다.

Curl 함수 사용법

Curl 함수는 임의의 필드 식(영어)에서 사용할 수 있는 함수 집합을 통해 사용할 수 있습니다. 예를 들어보겠습니다.

thumbnail image

위의 스크린샷에서 base_urlAPI의 호스트 주소를 저장하는 패키지 변수입니다. 적절한 인수와 함께 Curl이라는 함수를 호출하여 HTTP GET 요청을 수행하고 response라는 별칭을 사용하여 반환된 결과를 저장합니다.
응답은 Integrate.io 함수를 사용하여 추가적인 구문 분석을 할 수 있습니다. 예를 들어, 엔드 포인트가 JSON 형식의 문자열을 반환하는 경우,

{
    "life_time_value": 400,
    "is_active": true
}

JsonStringToMap(response)#'life_time_value'라는 표현식을 사용하여 JSON 응답에서 life_time_value필드를 추출할 수 있습니다.

Curl 함수와 이용 예

이 절에서는 Curl 기능의 다양한 기능에 대해 자세히 설명하고 몇 가지 사용 사례를 살펴 보겠습니다.

단순 HTTP 요청

Curl 함수는 HTTP 요청을 준비하고 실행하기 위한 기본적인 기능을 모두 제공합니다. 함수의 서명은 다음과 같습니다.
Curl(url, method[, headers[, request_body[, username[, password]]]])

이 함수의 처음 두 인수(url 및 method)는 필수이지만 다른 인수는 선택 사항입니다. 모든 인수를 사용한 경우의 예는 다음과 같습니다.

Curl(
'https://test-app.com/customers/',
'POST',
'{"Accept":"text/json"}',
'{"name":"Satwik","age":23}',
'some_username','some_password'
)
  1. url 인수에는 프로토콜을 지정할 필요가 있습니다 (http 와 https 의 양쪽 모두 제공되고 있습니다).
  2. HTTP method는 GET, PUT, POST, DELETE 중 하나를 지정할 수 있습니다.
  3. headers는 JSON 객체와 유사한 key-value 형식으로 지정할 수 있습니다.
  4. request_body는 문자열 형식으로 전달할 수 있습니다.
  5. 마지막으로 Basic 인증을 위해 usernamepassword를 지정할 수 있습니다.

Curl 함수의 반환 값은 세 개의 키로 구성된 맵 객체입니다.

  • status - HTTP 응답 코드
  • body - 원시 문자열 형식의 응답 본문
  • headers - 응답 헤더의 맵 객체

Curl 함수는 간단한 HTTP 요청을 만드는 데 필요한 모든 기본 기능을 다룹니다. 다음 절에서는 특정 사용 사례에 적합한 고급 기능을 소개합니다.

페이징된 리퀘스트

CurlWithPagination 함수를 사용하면 페이징된 API에 대해 여러 HTTP 요청을 수행하고 서버에서 응답을 수집할 수 있습니다. 이는 데이터를 가져오는 API에 페이징 없이는 전송할 수 없는 다량의 데이터가 있는 경우에 유용합니다.

다음은 CurlWithPagination 함수의 함수 시그니처입니다.
CurlWithPagination(url, method[, headers[, request_body[, username[, password[, pagination_scheme[, sleep_interval[, max_pages]]]]]]])

이 함수는 기본적인 Curl 함수의 모든 인수를 지원하고 페이지 분할 요청을 원하는 방식으로 생성하기 위한 선택적 인수도 지원합니다. 여기에 요청의 예가 나와 있습니다.

CurlWithPagination(
'https://test-app.com/customers',
'GET',
'', '', '', '',
'LinkHeader'.
100,
10000)

위의 스니펫은 지정된 URL에 대해 100ms마다 최대 10,000회의 GET 요청을 수행합니다. 페이지의 세부 사항은 응답에 포함된 링크 헤더에서 가져옵니다.
이 함수는 다음 pagination_scheme값을 지원합니다.

  • Automatic(기본값): Integrate.io는 도메인별로 페이지네이션 방법을 검색합니다. 페이지네이션을 지원하는 도메인 목록은 여기 링크에서 확인할 수 있습니다. 
    Integrate.io가 목록에 없는 엔드포인트에 대한 페이지네이션을 지원받고 싶으시면 저희 지원팀에 문의하십시오.
  • NoPagination : 이 함수를 Curl 함수와 같이 동작시킵니다.
  • LinkHeader : Integrate.io는 RFC 5988 사양에 따라 페이지를 가져옵니다.

Curl 함수와 달리 CurlWithPagination 함수의 반환 값은 단일 맵 객체가 아닌 맵 객체의 Bag 유형(페이징된 요청당 하나씩)입니다. 
다양한 Integrate.io 함수를 사용하여 이러한 맵 객체를 예상 형식으로 일치시킬 수 있습니다.

API 폴링

CurlPoll 함수를 사용하면 정규 표현식과 일치하거나 지정된 시간 초과 제한에 도달할 때까지 연속적으로 HTTP 요청을 수행할 수 있습니다. 이 함수는 상태 변경이나 엔드포인트의 응답을 기다려야 하는 비동기 작업에 특히 유용합니다. 
예를 들어, 주문 요약 보고서를 트리거하는 엔드포인트가 있고 해당 엔드포인트의 데이터 처리가 비동기적으로 수행된다고 가정합니다. 이러한 API는 일반적으로 자주 폴링할 수 있는 상태/최종 응답을 얻기 위한 엔드포인트를 가지고 있습니다.

아래는 함수의 시그니처입니다.
CurlPoll(regex_string,interval, timeout, url, method[, headers[, request_body[, username[, password]]]])

이 함수는 폴링 조건의 지정을 위한 3개의 필수 인수 (regex_string, interval, timeout) 이외에도 기본적인 Curl 함수의 모든 인수를 서포트하고 있습니다.
예를 들면 다음과 같습니다.

CurlPoll(
'status="(completed)',
1000,
60000,
'https://test-app.com/customers/5/upgrade_plan',
'GET',
'{"Accept":"text/json"}',
'','','') 

위의 함수는 1000ms(1초)마다 지정된 URL에 GET 요청을 합니다. 폴링은 함수 응답이 status=completed이거나 60000ms(1분)가 경과한 후에 종료됩니다. 
CurlPoll 함수의 반환값은 Curl 함수와 같고, 정규 표현에 매치한 응답, 또는 타임 아웃했을 경우의 마지막 응답의 전체의 상세 (status, body, 및 headers)를 포함합니다.

바이너리 형식의 응답 얻기

BinaryCurl 함수는 바이너리 형식의 응답을 반환하는 HTTP 요청을 만드는 데 사용됩니다. 이 함수는 API가 파일을 반환하는 경우 특히 유용합니다. 예를 들어, API가 압축된 .gz 파일을 반환하는 경우 File Storage Destination 컴포넌트를 사용하여 쓰기가 가능합니다.

BinaryCurl 함수의 서명은 Curl 함수와 완전히 동일합니다.
BinaryCurl(url, method[, headers[, request_body[, username[, password]]]])

여기에서는 요청 예를 소개합니다.

BinaryCurl(
'https://test-app.com/customers/5/archive.gz',
'GET',
'', '',
'some_username','some_password'
)

BinaryCurl의 반환 값은 Curl 함수의 반환 값과 비슷합니다. 그러나 반환 값의 body 부분에는 이진 데이터가 포함됩니다.

Integrate.io의 Connection을 사용한 인증

CCurl 메서드는 Integrate.io connection(영어) 을 사용하여 인증된 요청을 수행하는 데 사용됩니다. 이 기능은 Integrate.io 연결을 정의할 수 있는 서비스의 인증을 단순화하는 데 도움이 됩니다.
예를 들어 Shopify 스토어에 새로운 주문을 생성하기 위해 HTTP 요청을 하고 싶다면 Shopify 연결을 정의후에 이를 사용하여 Curl 함수에서 직접 인증을 처리하는 대신 자체적으로 인증을 처리 할 수 있습니다.

여기가 CCurl의 서명입니다.
CCurl(url, [method, [headers, [request_body, [connection_id]]]])

Curl 메소드와는 달리, 이 함수는 유저명과 패스워드의 인수를 가지지 않는 것에 주의해 주세요.
다음은 요청의 예입니다.

CCurl(
'http://test-app.com/customers/',
'POST','{"Accept":"text/json"}',
'{"name":"satwik","age":23}',
'my_connection_12'
)

이 예에서는 my_connection_12는 대쉬보드의 Connection 화면에서 볼 수 있는 커넥션 ID입니다.
CCurl 함수의 반환값은 Curl 함수의 반환값과 완전히 같습니다.

기타 기능

앞에서 설명한 기능을 결합하여 Integrate.io 연결에서 인증을 허용하는 몇 가지 기능이 있습니다.

  • CCurlWithPagination : 인증을 위해 Integrate.io에 정의 된 연결을 사용하는 동안 페이징 된 요청을 수행하는 데 사용됩니다.
  • CCurlPoll : 인증을 위해 Integrate.io에 정의 된 연결을 사용하는 동안 폴링 요청을 수행하는 데 사용됩니다.
  • BinaryCCurl : Integrate.io에 정의된 연결을 사용할 때 사용합니다. 인증을 위해 Integrate.io 연결을 사용할 때 Binary를 반환하는 요청을 만드는 데 사용됩니다.

참고 사항은 인증에 Integrate.io에 정의 된 연결을 사용하는 이러한 함수는 해당 함수를 사용하는 변수가 포함 된 패키지를 확인하거나 X-console에서 유효성을 검사하면 NULL을 반환한다는 것입니다. 입니다. 그러나 실제 작업이 실행될 때 예상대로 작동합니다.

비교표 : Integrate.io Curl 함수 및 유스 케이스 요약

사용 사례에 적합한 함수를 선택하려면 다음 표를 참조하십시오.

명령어 HTTP Request 작성 Basic 인증 커넥션을 통한 인증 이진 데이터 검색 페이지 데이터 처리 Response 풀링
Curl
BinaryCurl
CurlWithPagination
CurlPoll
CCurl
BinaryCCurl
CCurlWithPagination
CCurlPoll

단계별 예

API를 사용하여 새로우 서비스에 데이터를 마이그레이션하는 일반적인 사용 사례를 생각해 봅시다. 고객 데이터는 데이터베이스 테이블에 존재하며 데이터는 일부 전처리 후 외부 분석 서비스로 전송해야 합니다. 전처리 단계에서는 기존 데이터를 보강하기 위해 내부 API 엔드포인트(/customer/summary/<int:customer_id>)를 호출해야 합니다.
이 API는 다음 형식의 JSON 응답을 반환합니다.

{
    "email": satwik@example.org,
    "life_time_value": 546,
    "is_active": true
    ... // More such fields
}

'Active' 고객만 마이그레이션 해야 합니다. 데이터 보강 후 데이터는 REST API를 통해 외부 서비스로 전달되며 고객 데이터를 입력해야 합니다.
우리는 JSON 형식으로 데이터를 전달하는 API를 호출하기 위해 Curl 함수를 사용해야합니다. 마지막으로 내부감사 목적으로 데이터베이스에 마이그레이션 상태를 저장해야 합니다.

솔루션

마지막으로

Integrate.io의 Curl 함수는 다양한 시나리오에서 타사 API를 사용하기 위한 여러 옵션을 제공합니다.
제공된 표를 참조하고 비디오 데모에 액세스하면 Integrate.io의 Curl 함수와 그 가능성을 더 잘 이해할 수 있습니다.

Integrate.io의 Curl 함수가 여러분의 사용 사례에 어떻게 적용될 수 있는지 알아보려면 온라인 데모를 예약하고 데모 후 14일 동안 무료로 사용해 보세요.