HTTP 요청 보내기

HTTP 요청 보내기 작업은 워크플로를 웹 서버 또는 URL에 연결하고 HTTP 요청을 보냅니다.

Flow에서 HTTP 요청을 보내면 HTTP 응답 코드가 최대 30초 동안 기다립니다. Flow에서 30초 후에 응답을 받지 못하면 앱에 대한 연결이 닫힙니다. 나중에, 요청을 다시 시도하세요.

필드

HTTP 보내기 요청 동작에 포함된 필드는 다음과 같습니다.

HTTP 요청 보내기 작업에서 사용되는 필드입니다.
필드설명
HTTP 방법HTTP 요청의 전송 방법입니다. HTTP 요청 보내기 작업은 다음 방법을 지원합니다.
  • 가져오기 - 서버에서 정보 요청을 보냅니다.
  • 삭제 - 서버에서 리소스를 제거합니다.
  • Head - 서버의 HTTP 응답 헤더를 검색합니다.
  • 옵션 - 서버에서 지원하는 옵션 및 기능을 검색합니다.
  • 패치 - 서버에서 리소스를 부분적으로 업데이트합니다.
  • Put - 서버에서 리소스를 업데이트합니다.
  • Post - 서버에서 리소스를 생성하거나 대체합니다.
URLHTTP 요청이 전송되는 서버의 URL입니다.
헤더HTTP 요청에 대한 키와 값은 페어링됩니다. 여러 키-값 쌍을 입력할 수 있습니다.
본문서버에 보낼 콘텐츠입니다.
클라이언트 오류 발생 시(4XX 응답) 응답 코드가 클라이언트 오류를 나타낼 경우, Flow는 다음과 같이 처리합니다.
  • 재시도 - 다른 응답 코드를 받거나 시간이 초과될 때까지 최대 24시간 동안 재시도합니다.
  • 실패 - 워크플로 실행을 실패 처리합니다.
  • 무시 - 오류를 무시하고 워크플로 실행을 계속 진행합니다.
서버 오류 발생 시(5XX 또는 429 응답)서버 오류를 나타내는 응답 코드를 수신하면, Flow는 다음과 같이 처리합니다.
  • 재시도 - 다른 응답 코드를 받거나 시간이 초과될 때까지 최대 24시간 동안 재시도합니다.
  • 실패 - 워크플로 실행을 실패 처리합니다.
  • 무시 - 오류를 무시하고 워크플로 실행을 계속 진행합니다.

반환된 데이터

이 작업 이후 단계에서 반환된 데이터에 접근하려면, HTTP 응답의 모든 세부 정보를 포함하는 sendHttpRequest 변수를 사용하세요. 선택적으로, 이후 워크플로 단계에서 사용할 수 있도록 응답의 body을 파싱하려면 코드 실행 액션을 사용하세요. 아래 예시를 참고하세요.

하나의 워크플로에서 HTTP 요청 보내기 작업이 여러 번 사용되는 경우, 변수 이름에 숫자가 추가됩니다. 예를 들어, HTTP 요청 보내기 작업이 두 번 사용된 워크플로에서는 반환된 데이터의 첫 번째 변수는 sendHttpRequest, 두 번째 변수는 sendHttpRequest1입니다. 이 이름은 사용자 지정이 불가능합니다.

응답 코드

다음 표에서는 Flow에서 응답을 받은 후 HTTP 응답 코드를 처리하는 방법을 설명하고 있습니다.

Flow에서 HTTP 응답 코드를 프로세스하는 방법
HTTP 응답 코드Flow에서 응답 코드를 처리하는 방법
2XX 또는 3XX 성공Flow는 HTTP 요청을 성공으로 표시하고 워크플로에서 후속 작업을 수행합니다.
4XX 오류,
5XX 및 429 오류
액션 구성 방식에 따라 Flow는 다음과 같이 동작합니다.
  • 재시도 - 다른 응답 코드를 받거나 시간이 초과될 때까지 최대 24시간 동안 재시도합니다.
  • 실패 - 워크플로 실행을 실패 처리합니다.
  • 무시 - 오류를 무시하고 워크플로 실행을 계속 진행합니다.
기타 응답 코드응답이 이 표에 설명되지 않은 코드를 반환하거나 재시도 중 시간이 초과되면, Flow는 HTTP 요청을 실패로 표시하고 워크플로 실행을 실패 처리하며 이후 워크플로 액션을 수행하지 않습니다.

암호

시크릿은 액세스 토큰이나 비밀번호 등 민감한 정보를 안전하게 저장하여 HTTP 요청 보내기 액션에서 사용할 수 있도록 합니다. 시크릿은 Flow > 설정 페이지에서 생성 및 관리할 수 있습니다. 시크릿에는 핸들, 값, 설명이 포함됩니다. 시크릿은 Liquid 변수({{secrets.handle}} 등)로 참조하거나 URL, 헤더 값, 본문 필드 구성 시 시크릿 추가 옵션에서 사용할 수 있습니다. 시크릿 값은 Flow 인터페이스에서 절대 표시되지 않으며, 워크플로 실행 로그에서도 가려집니다.

트리거

HTTP 보내기 요청 작업은 모든 워크플로에서 사용할 수 있습니다.

예시 1: 외부 서비스에 HTTP 요청 보내기

이 예에서는 Flow를 사용하여 외부 서비스로 HTTP 요청을 전송합니다.

시작하기 전에 HTTP 요청을 수신하고 테스트 요청의 데이터를 저장하는 Request Catcher와 같은 웹 서비스를 구성합니다. 타사 서비스에 중요한 데이터(예: 비밀번호 또는 API 키)를 보낼 때는 주의해야 합니다.

단계:

  1. 제품 상태 업데이트됨 트리거를 선택하면 제품의 상태를 변경하여 이 워크플로를 테스트할 수 있습니다.

  2. 워크플로에 HTTP 요청 보내기 작업을 추가하고 트리거에 연결하세요. 그런 다음 HTTP 요청 보내기 단계를 클릭하여 구성 패널을 여세요.

    • HTTP 메서드 필드에 POST를 입력합니다.
    • URL 필드에 테스트할 URL을 입력합니다(예: https://yourFlowTest.requestcatcher.com/test.
    • 머리글 섹션에서 Content-Typetext/plain 과 함께 머리글을 입력합니다.
    • 본문 섹션에서 {{product.title}}{{product.status}}을(를) 입력하여 트리거에서 제목과 제품이 업데이트된 상태를 보냅니다.
  3. 워크플로를 활성화합니다.

  4. 제품 상태를 초안에서 활성으로 변경하여 테스트하세요.

  5. 이 예제에서 https://yourFlowTest.requestcatcher.com/와 같은 외부 테스트 서비스의 결과를 관찰합니다.

예시 2: 코드 실행으로 HTTP 응답 파싱하기

이 예시에서는 Flow를 사용해 외부 서비스에 HTTP 요청을 보내고, 코드 실행 액션으로 HTTP 응답의 body을 파싱하여 이후 워크플로 단계에서 사용합니다.

시작하기 전에, Postman Echo와 같이 HTTP 요청을 수신하고 데이터를 반환하는 웹 서비스를 선택하세요. 타사 서비스에 중요한 데이터(예: 비밀번호 또는 API 키)를 보낼 때는 주의해야 합니다.

단계:

  1. 제품 상태 업데이트됨 트리거를 선택하면 제품의 상태를 변경하여 이 워크플로를 테스트할 수 있습니다.
  2. 워크플로에 HTTP 요청 보내기 작업을 추가하고 트리거에 연결하세요. 그런 다음 HTTP 요청 보내기 단계를 클릭하여 구성 패널을 여세요.
    • HTTP 메서드 필드에 POST를 입력합니다.
    • URL 필드에 테스트할 URL을 입력합니다(예: https://postman-echo.com/post.
    • 머리글 섹션에서 Content-Typeapplication/json 과 함께 머리글을 입력합니다.
    • 본문 섹션에 다음과 같은 워크플로로 반환할 예시 JSON을 입력하세요. ``` { "productTitle": "{{product.title}}", "productStatus": "{{product.status}}" }
3. 워크플로에 **코드 실행** 액션을 추가하고, 이를 **HTTP 요청 보내기** 액션과 연결하세요. 그런 다음 **코드 실행** 단계를 클릭하여 구성 패널을 여세요.
      - **입력 정의** 필드에 `sendHTTPrequest` 객체에서 반환된 `body`을 포함하세요. 예:  ```
query{
sendHttpRequest {
  body
}
}
- **출력 정의** 필드에는 출력 스키마에 정의된 내용을 입력하세요. 예:  ```

type Output { productTitle: String! productStatus: String! }

- **코드 작성** 필드에서 `JSON.parse` 메서드를 사용해 응답을 파싱하고, 반환하는 데이터가 출력 스키마에 정의된 형태와 유형에 맞는지 확인하세요. 예:  ```
export default function main(input) {
const body = JSON.parse(input.sendHttpRequest.body);
console.log("body is", body);
return {
  productTitle: body.data.productTitle,
  productStatus: body.data.productStatus
}
}
  1. 워크플로에 출력 기록 작업을 추가하고 코드 실행 작업에 연결하세요. 그런 다음 코드 실행 단계를 클릭하여 구성 패널을 여세요.
    • 출력 필드에는 코드 실행 단계에서 반환된 변수를 포함하세요. 예: ``` Title from HTTP response: {{runCode.productTitle}} Status from HTTP response: {{runCode.productStatus}}
5. 워크플로를 활성화합니다.
6. 제품 상태를 **초안**에서 **활성**으로 변경하여 테스트하세요.
7. **[Flow / 최근 실행](https://admin.shopify.com/apps/flow/activity)** 페이지에서 실행 결과를 확인하고, **로그 출력** 단계의 값이 **HTTP 요청 보내기** 출력에서 반환된 값과 일치하는지 확인하세요.

## 템플릿 {#templates}

### 예정된 주문에 대해 주문 처리 공급업체에 알림

Order Tagger에서 주문에 "창고" 태그가 지정되면 주문 처리 공급업체에 HTTP 요청을 보냅니다. [템플릿 보기](https://shopify.com/admin/apps/flow/editor/templates/e99f15ae-454b-443b-b6c7-7dc4b2afc129)

### 새 주문을 Airtable로 전송하기

주문이 생성될 때 주문을 Airtable로 전송합니다. [템플릿 보기](https://admin.shopify.com/apps/flow/editor/templates/0196f2e1-ab85-7157-90e2-7de1149201a7)

### 모든 기존 및 신규 제품을 Airtable로 전송하기

10분마다 Airtable로 전송되지 않은 제품(태그별)을 찾아 Airtable로 전송합니다. [템플릿 보기](https://admin.shopify.com/apps/flow/editor/templates/0196f2e1-a789-7f9d-a64e-a9be2b544e82)

### Airtable에 저장된 제품 데이터를 기반으로 제품을 일괄 업데이트합니다.

Airtable에 저장된 제품 데이터를 기반으로 제품을 일괄 업데이트합니다. [템플릿 보기](https://admin.shopify.com/apps/flow/editor/templates/0196f2e1-b499-7384-a418-919d752d7a8b)

### SendGrid를 사용하여 만료 예정인 기프트 카드를 고객에게 알립니다.

매일 7일 내에 만료되는 모든 기프트 카드를 조회하여 SendGrid를 통해 고객에게 이메일을 발송합니다. [템플릿 보기](https://admin.shopify.com/apps/flow/editor/templates/0196f2e1-a4b9-7ff0-8181-9de43d95ae1e)

### 고객이 맞춤 제품을 주문할 때 SendGrid를 사용하여 이메일을 발송합니다.

고객이 사용자 지정 품목을 주문할 때 SendGrid를 사용하여 거래 이메일을 전송합니다. [템플릿 보기](https://admin.shopify.com/apps/flow/editor/templates/0196f2e1-adc1-7139-9644-43ba3a4c71eb)
적절한 답변을 찾을 수 없습니까? 언제든지 도와드리겠습니다.