Respond to Webhook
Respond to Webhook 노드를 사용하면 수신된 webhook에 대한 응답을 제어할 수 있습니다. Respond to Webhook 노드는 첫 번째 수신 데이터 항목을 사용하여 한 번만 실행됩니다. Respond to Webhook 노드를 사용하려면:
Respond to Webhook 노드를 사용하면 수신된 webhook에 대한 응답을 제어할 수 있습니다. 이 노드는 Webhook 노드와 함께 동작합니다.
Respond to Webhook 노드는 첫 번째 수신 데이터 항목을 사용하여 한 번만 실행됩니다. 자세한 내용은 하나 이상의 데이터 항목 반환을 참조하세요.
Respond to Webhook 사용 방법#
Respond to Webhook 노드를 사용하려면:
- 워크플로우의 트리거 노드로 Webhook 노드를 추가합니다.
- Webhook 노드에서 Respond를 Using 'Respond to Webhook' node로 설정합니다.
- 워크플로우 어디에나 Respond to Webhook 노드를 추가합니다. 다른 노드의 데이터를 반환하려면 해당 노드 뒤에 배치하세요.
노드 파라미터#
이 파라미터를 사용하여 노드 동작을 설정합니다.
Respond With#
webhook 응답으로 전송할 데이터를 선택합니다.
- All Incoming Items: 입력에서 수신된 모든 JSON 항목으로 응답합니다.
- Binary File: Response Data Source에 정의된 바이너리 파일로 응답합니다.
- First Incoming Item: 첫 번째 수신 항목의 JSON으로 응답합니다.
- JSON: Response Body에 정의된 JSON 객체로 응답합니다.
- JWT Token: JSON Web Token(JWT)으로 응답합니다.
- No Data: 응답 페이로드 없음.
- Redirect: Redirect URL에 설정된 URL로 리다이렉트합니다.
- Text: Response Body에 설정된 텍스트로 응답합니다. 기본적으로 HTML로 전송됩니다(
Content-Type: text/html).
노드 옵션#
Add Option을 선택하여 옵션을 확인하고 설정합니다.
- Response Code: 사용할 응답 코드를 설정합니다.
- Response Headers: 전송할 응답 헤더를 정의합니다.
- Put Response in Field: All Incoming Items 또는 First Incoming Item으로 응답할 때 사용 가능합니다. 응답 데이터를 포함하는 필드의 이름을 설정합니다.
- Enable Streaming: 활성화하면 스트리밍을 사용하여 데이터를 사용자에게 전송합니다. Response mode가 Streaming으로 설정된 트리거가 필요합니다.
n8n의 HTML 응답 보안 처리#
n8n 버전 1.103.0부터 n8n은 webhook에 대한 HTML 응답을 자동으로 <iframe> 태그로 감쌉니다. 이는 인스턴스 사용자를 보호하기 위한 보안 메커니즘입니다.
이로 인해 다음과 같은 영향이 있습니다:
- HTML은 상위 문서에 직접 렌더링되지 않고 샌드박스 iframe에서 렌더링됩니다.
- 최상위 window 또는 로컬 스토리지에 접근하려는 JavaScript 코드는 실패합니다.
- 샌드박스 iframe에서는 인증 헤더(예: basic auth)를 사용할 수 없습니다. HTML 내에 단기 액세스 토큰을 임베드하는 등의 대안적인 방법을 사용해야 합니다.
- 상대 URL(예:
<form action="/">)은 작동하지 않습니다. 대신 절대 URL을 사용하세요.
템플릿 및 예시#
이 노드의 워크플로 템플릿은 n8n 워크플로 템플릿 갤러리에서 확인할 수 있습니다.
워크플로우 동작#
Respond to Webhook 노드를 사용할 때 워크플로우는 다음과 같이 동작합니다:
- Respond to Webhook 노드를 실행하지 않고 워크플로우가 종료되는 경우: 200 상태와 함께 표준 메시지를 반환합니다.
- 첫 번째 Respond to Webhook 노드가 실행되기 전에 워크플로우에 오류가 발생하는 경우: 500 상태와 함께 오류 메시지를 반환합니다.
- 첫 번째 Respond to Webhook 노드 이후 두 번째 노드가 실행되는 경우: 워크플로우가 이를 무시합니다.
- Respond to Webhook 노드가 실행되었지만 webhook이 없었던 경우: 워크플로우가 Respond to Webhook 노드를 무시합니다.
webhook에 전송된 응답 출력#
기본적으로 Respond to Webhook 노드에는 노드의 입력 데이터를 포함하는 단일 출력 브랜치가 있습니다.
선택적으로 webhook에 전송된 응답을 포함하는 두 번째 출력 브랜치를 활성화할 수 있습니다. 이 보조 출력을 활성화하려면 캔버스에서 Respond to Webhook 노드를 열고 Settings 탭을 선택합니다. Enable Response Output Branch 옵션을 활성화합니다.
이제 노드에 두 개의 출력이 생깁니다:
- Input Data: 노드의 입력을 전달하는 원래 출력.
- Response: webhook에 전송된 응답 객체.
하나 이상의 데이터 항목 반환 (deprecated) {#return-more-than-one-data-item-deprecated}#
n8n 1.22.0에서 All Incoming Items 옵션을 사용하여 모든 데이터 항목을 반환하는 기능이 추가되었습니다. n8n은 이 섹션에 설명된 우회 방법 대신 최신 버전의 n8n으로 업그레이드할 것을 권장합니다.
Respond to Webhook 노드는 표현식(expressions)을 사용하는 경우에도 첫 번째 수신 데이터 항목을 사용하여 한 번만 실행됩니다. Loop 노드를 사용하여 강제로 반복하더라도 워크플로우는 실행되지만 webhook 응답은 여전히 첫 번째 실행 결과만 포함됩니다.
하나 이상의 데이터 항목을 반환해야 하는 경우 다음 옵션 중 하나를 선택하세요:
- Respond to Webhook 노드를 사용하는 대신 Webhook 노드의 Respond에서 When Last Node Finishes 옵션을 사용합니다. 워크플로우가 최종적으로 출력하는 데이터를 반환하려는 경우 이 방법을 사용하세요.
- Aggregate 노드를 사용하여 데이터를 Respond to Webhook 노드에 전달하기 전에 여러 항목을 단일 항목으로 변환합니다. Aggregate를 **All Item Data (Into a Single List)**로 설정하세요.
