< integrate.io의 블로그 기사 번역 >
HTTP 리퀘스트를 만드는 기능 외에도 integrate.io는 특정 사례에 유용한, 다양한 Curl 함수와 고급 기능을 제공합니다. 이 기사에서는 단계별 데모 외에도 Curl 함수와 기능을 소개합니다. Curl 함수는 어떤 경우에 사용합니까? integrate.io의 Curl 함수는 HTTP 요청을 실행하고 반환된 응답을 데이터 파이프라인에서 사용할 수 있습니다. Curl 기능을 사용하여 다음 중 하나를 수행할 수 있습니다.
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’
)
- HTTP method는 GET, PUT, POST, DELETE 중 하나를 지정할 수 있습니다.
- 마지막으로 Basic 인증을 위해 username과 password를 지정할 수 있습니다.
페이징된 리퀘스트
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값을 지원합니다.
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 함수의 반환값과 완전히 같습니다.