Make HTTP
Make HTTP
HTTP는 월드와이드웹에서 데이터를 주고받는 가장 기본 구성 요소예요. Make의 HTTP 앱을 쓰면 Make에 공식 통합이 없는 API 서비스나 애플리케이션에도 직접 연결할 수 있는데요, 어떤 API든 URL과 메서드만 알면 요청을 보내고 응답을 받아 시나리오 흐름에 활용할 수 있게 돼요. 지금 쓰는 HTTP 앱 버전 4는 설정을 단순화하고, 더 안전한 키체인(keychain) 저장 방식을 쓰며, 네이티브 페이지네이션을 지원해요. 예전의 HTTP(legacy) 앱을 쓰고 있다면 버전 드롭다운에서 버전 3을 선택하면 돼요.
이 문서는 표준 모듈 설정(URL·메서드·헤더·본문·인증)부터 응답 처리, 고급 설정, 리다이렉션 동작까지 HTTP 모듈을 실무에서 다루는 순서대로 정리한 공식 문서예요. 코드와 명령어, 설정 값은 원문 그대로 보존했으니 옆에서 하나씩 따라가 보면 금방 감이 잡힐 거예요.
출처: 문서
본문
HTTP 모듈: GET/POST 요청 만들기
HTTP 앱에서 제공하는 모듈은 크게 세 가지예요.
- Make a request: 아무 서버에나 HTTP 요청을 보내요.
- Download a file: 지정한 URL에서 파일을 다운로드해요.
- Resolve URL: 리다이렉트를 거쳐 최종 URL을 찾아줘요.
두 모듈 모두 인증이 있는 요청과 없는 요청을 지원해요. 인증이 필요한 서비스라면 대상 서비스의 API 문서에서 요구하는 방식대로 다음 중 하나를 골라야 해요.
- Basic Auth —
https://apps.make.com/basic-auth-authentication-type - API Key —
https://apps.make.com/api-key-authentication-type - OAuth 2.0 —
https://apps.make.com/oauth-20-authentication-type
보안을 위해 인증 정보는 전용 Credentials 필드에 정의하는 게 좋아요. 헤더나 쿼리 파라미터로 인증 정보를 넘기면 요청에 키가 노출될 수 있으니까요. 전용 필드를 쓰면 요청에서 키가 노출되는 걸 막고, 인증 자격 증명을 한곳에서 중앙 관리할 수 있으며, 키를 교체하기도 쉽고 안전해요.
표준 모듈 설정 (Standard module settings)
Make a request 모듈의 핵심 설정은 다음과 같아요.
| 필드 | 설명 |
|---|---|
| Authentication type | 요청에 필요한 인증 타입을 선택해요. No authentication은 자격 증명이 필요 없을 때(예: 웹 스크래핑), API key는 서비스가 토큰을 요구할 때, Basic Auth는 사용자 이름과 비밀번호가 필요할 때, OAuth 2.0은 클라이언트 자격 증명(Client ID와 Client Secret)이 필요할 때 써요. |
| Credentials | 선택한 인증 타입에 맞는 자격 증명을 추가해요. |
| URL | API 엔드포인트(기본 URL 포함), 웹훅, 또는 웹페이지 URL을 https://로 시작하게 입력해요. Make는 보안 HTTPS 연결만 허용하고, 검증되지 않은(자체 서명된) 인증서를 쓰는 연결은 거부해요. |
| Method | 사용할 HTTP 메서드를 선택해요. GET은 항목 정보 조회, HEAD는 응답 본문 없이 상태 줄과 헤더 조회, POST는 새 항목 생성, PUT은 기존 항목 갱신/교체, PATCH는 부분 갱신, DELETE는 항목 삭제, OPTIONS는 해당 리소스에서 가능한 연산 정보 요청이에요. |
| Headers | 요청에 추가 메타데이터나 지시를 담으려면 헤더를 추가해요. 예를 들어 User-Agent로 클라이언트를 식별하고 Cache-Control로 캐싱 지시를 줄 수 있어요. 인증 자격 증명과 콘텐츠 타입은 전용 모듈 필드(Credentials, Content type)가 있으니 이 필드로 정의할 필요는 없어요. |
| Query parameters | 요청을 세부화/맞춤 설정하는 쿼리 key-value 쌍을 입력해요. 주로 GET과 DELETE 메서드에서 유용하고, 서비스의 API 문서에서 쿼리 파라미터를 찾을 수 있어요. |
| Body content type | HTTP 본문에 담을 데이터 형식을 선택해요. application/json은 데이터를 JSON 형식으로 입력하고, multipart/form-data는 파일 업로드를 지원하며 파일과 텍스트 필드를 보낼 수 있고, application/x-www-form-urlencoded는 URL 스타일로 인코딩된 form 필드를 보내며(본문은 하나의 쿼리 문자열이 돼요), Custom은 text/plain처럼 원하는 커스텀 콘텐츠 타입을 써요. |
| Content type value | Custom 본문 타입을 선택했을 때 콘텐츠 타입 값을 지정해요. 예: xml, html. |
| Parse response | Yes를 선택하면 출력 데이터를 구조화해서 매핑하기 쉽게 만들어요. 모듈을 한 번 실행하면 모든 매핑 가능 항목을 사용할 수 있어요. |
JSON 본문 입력 방식 (Body input method)
JSON 본문 타입에서는 입력 방식을 두 가지로 선택할 수 있어요.
- Data structure: JSON 본문을 데이터 구조로 정의해 각 key에 값을 매핑하거나 입력해요. 값 안의 JSON 예약 문자는 자동으로 이스케이프되어 잘못된 JSON으로 인한 오류를 피하는 데 도움을 줘요.
- JSON string: JSON 본문을 원시 텍스트 문자열로 입력해요. 값에 JSON 예약 문자가 있으면 직접 이스케이프해야 해요.
다른 본문 타입에서 본문을 입력하는 방법도 케이스별로 달라요. multipart/form-data면 Text에 key-value 쌍을, File에 이전 모듈에서 업로드할 파일을 매핑하거나 파일 이름과 데이터를 직접 넣어요. application/x-www-form-urlencoded면 &로 구분되고 =로 key와 value가 이어지는 쌍으로 입력해요. 결과 요청 형식은 이렇게 돼요.
field1=value1&field2=value2
인증 (Authentication)
앞서 본 것처럼 인증 방식은 No authentication, API key, Basic Auth, OAuth 2.0 네 가지예요. 대상 서비스의 API 문서가 요구하는 방식에 따라 선택하고, 선택한 타입에 맞춰 Credentials 필드에 키체인이나 커넥션을 추가하면 돼요.
- API key: API key 인증 타입 키체인 생성
- Basic Auth: Basic Auth 인증 타입 키체인 생성
- OAuth 2.0: OAuth 2.0 인증 타입 커넥션 생성
응답 처리 (Response handling)
응답 데이터를 다루는 핵심 스위치는 두 가지예요.
- Parse response를 Yes로 켜면 서버가 돌려준 본문을 구조화된 출력으로 만들어요. 이렇게 하면 이후 모듈에서
data.item.title같은 경로로 바로 매핑할 수 있어요. - Return error if HTTP request fails를 Yes로 켜면 요청이 4xx나 5xx 오류를 돌려줄 때 시나리오를 중단해요.
요청이 실패했을 때 시나리오를 멈추고 싶은지, 아니면 오류 응답도 데이터로 받아서 흐름을 계속 이어갈지에 따라 이 설정을 정하면 돼요.
페이지네이션 (Pagination)
큰 데이터셋을 작게 나눠 받을 수 있게 해 주는 기능이 페이지네이션이에요. 대상 서비스 API가 페이지네이션을 지원하는지, 어떤 타입인지, 무엇을 구성해야 하는지는 해당 API 문서에서 확인하는 게 일반적이에요. Make에서 쓸 수 있는 페이지네이션 타입은 다음과 같아요.
- Offset-based:
offset과limit두 파라미터를 써요. offset은 데이터셋의 시작 지점/위치이고 limit은 각 페이지에 포함할 최대 레코드 수예요. 예:?offset=10&limit=10 - Page-based: 가져올 페이지를 현재 페이지 번호 + 1 값으로, 때로는 페이지 제한과 함께 정의해요. 예:
?page=3&limit=20 - URL or link-based: 서버가 다음 페이지를 가리키는 구체적인 URL을 제공해요.
- Token or cursor-based: 현재 페이지의 마지막 항목 ID를 정의하거나 다음 페이지의 시작점을 매핑해요(구현에 따라 다름). 예:
?cursor=zwJkYXI3MX0
페이지네이션을 구성할 때는 응답 쪽과 요청 쪽 설정을 함께 채워야 해요. 응답 쪽에서는 Items path(항목 배열 경로, 예: results나 result.users), Next page URL/link path(예: links.next나 meta.next_page_url), Next page token/cursor path(예: next_cursor나 meta.next)를, 요청 쪽에서는 Offset parameter name(예: offset/skip), Page parameter name(예: page/page_number), Page token/cursor parameter name(예: pageToken/cursor), Page size parameter name(예: limit/per_page)을 넣어요. 출력 형식은 Array of items 또는 Array of pages 중에서 고르고, Limit에는 페이지당 반환할 최대 항목 수(1~10000 사이 숫자)를 지정해요.
고급 설정 (Advanced settings)
상황에 따라 더 세밀한 제어가 필요할 때 쓰는 설정들이에요.
- Transport Layer Security (TLS): API의 보안 설정이 요구하면 TLS 핸드셰이크 방식을 선택해요. Mutual TLS는 클라이언트와 서버가 모두 인증서로 서로를 검증하고 CA 인증서와 클라이언트 ID 인증서 업로드가 필요해요. TLS only는 서버만 인증서를 제시하면 돼요.
- CA certificate: 키체인을 만들고 CA 인증서를 추가해요.
- Client identity (Mutual TLS용): 키를 선택하거나 인증서와 개인 키를 추가해요.
- Proxy: 네트워크가 중간 서버를 통해 라우팅해야 한다면 키체인을 만들고 Host(프록시 서버 도메인/IP), Port(1~65535), 필요하면 Username과 Password를 구성해요.
- Return error if HTTP request fails: 요청이 4xx/5xx 오류를 반환하면 시나리오를 중단할지 선택해요.
- Timeout: 응답 대기 시간(초)을 지정해요. 1에서 300 사이의 숫자예요.
- Allow redirects: HTTP 리다이렉션 응답을 자동으로 따라갈지 선택해요. 최대 10개까지 따라가요.
- Share cookies with other HTTP modules: 다른 HTTP 모듈과 쿠키를 공유할지 선택해요.
- Request compressed content: 응답 데이터의 압축을 요청할지 선택해요.
Accept-Encoding헤더를 추가해요.
리다이렉션 동작 (Redirection in HTTP requests)
리다이렉션이 켜져 있을 때 HTTP 모듈이 각 상태 코드에 어떻게 반응하는지 알아두면 예상 밖의 동작을 피할 수 있어요.
- 300 (Multiple Choices) — POST, PUT, PATCH, GET, HEAD, DELETE: 원래 메서드와 요청 본문이 리다이렉션 요청에 보존돼요. 원래 요청의 쿼리 파라미터는 버려져요.
- 301 (Moved Permanently)와 302 (Found): 두 코드는 follow redirects 동작이 비슷해요(초기 브라우저의 비표준 관행을 반영). GET/HEAD는 메서드가 유지되고 본문이 보존되며 쿼리 파라미터도 보존돼요. POST는 메서드가 GET으로 바뀌고 본문은 보존되며 쿼리 파라미터는 보존돼요. PUT/PATCH/DELETE는 메서드가 유지되고 본문·쿼리 파라미터가 보존돼요.
- 303 (See Other): 원래 메서드와 무관하게 새 위치로 GET 요청을 하라고 명시적으로 알려줘요. GET/HEAD는 메서드 유지·본문 보존. POST/PUT/PATCH/DELETE는 메서드가 항상 GET으로 바뀌고 요청 본문은 버려져요.
- 304 (Not Modified) — POST, PUT, PATCH, GET, HEAD, DELETE: 원래 메서드와 요청 본문이 보존되고 원래 쿼리 파라미터는 버려져요.
- 305 (Use Proxy), 306 (Switch Proxy), 307 (Temporary Redirect), 308 (Permanent Redirect) — POST, PUT, PATCH, GET, HEAD, DELETE: 원래 메서드와 요청 본문이 보존되고 쿼리 파라미터는 Location URL에 새 파라미터가 없는 한 보존돼요.
Download a file (파일 다운로드)
Download a file 모듈은 지정한 URL에서 파일을 내려받아요. URL 필드에 다운로드할 파일의 URL을 입력하면 파일 데이터를 이후 모듈에서 매핑해 사용할 수 있어요. Make는 보안 HTTPS 연결만 허용하고, 검증되지 않은(자체 서명된) 인증서를 쓰는 연결은 거부해요. 고급 설정에서는 Return error if HTTP request fails(4xx/5xx 오류 시 시나리오 중단 여부)를 켤 수 있어요.
더 알아보기
더 자세한 HTTP 모듈 설명과 최신 설정 옵션은 공식 문서에서 확인할 수 있어요.