일. 8월 17th, 2025

안녕하세요! 🤖 자동화의 세계에 오신 여러분을 환영합니다. n8n을 사용하면서 ‘만능 칼’처럼 느껴지는 노드가 하나 있습니다. 바로 HTTP Request 노드입니다. 이 노드야말로 n8n을 단순한 자동화 도구를 넘어, 세상의 모든 API와 연결시켜주는 핵심 브릿지 역할을 수행합니다.

오늘은 이 강력한 HTTP Request 노드를 완벽하게 파헤치고, 다양한 실제 활용 예시를 통해 여러분의 자동화 스킬을 한 단계 업그레이드할 수 있도록 도와드리겠습니다.


🚀 1. HTTP Request 노드란 무엇인가?

HTTP Request 노드는 이름 그대로 “HTTP 요청”을 보내는 노드입니다. 우리가 웹 브라우저에서 특정 웹사이트에 접속하거나, 모바일 앱이 서버와 데이터를 주고받을 때 사용하는 기본적인 통신 규약인 HTTP(Hypertext Transfer Protocol)를 n8n 워크플로우 내에서 직접 다룰 수 있게 해줍니다.

쉽게 말해, 이 노드를 사용하면 여러분의 n8n 워크플로우가 웹상의 거의 모든 서비스(예: Google, Slack, Notion, Twitter, 여러분의 회사 내부 시스템 등)의 API(Application Programming Interface)와 직접 소통하며 데이터를 주고받을 수 있게 됩니다.

주요 기능:

  • GET, POST, PUT, DELETE 등 다양한 HTTP 메서드를 사용하여 데이터 조회, 생성, 수정, 삭제 등을 수행합니다.
  • 인증(Authentication) 정보를 포함하여 보안이 필요한 API에 접근할 수 있습니다.
  • 요청 헤더(Headers), 쿼리 파라미터(Query Parameters), 요청 바디(Body) 등 상세한 요청 내용을 구성할 수 있습니다.
  • API로부터 받은 응답(Response)을 다음 노드에서 사용할 수 있도록 처리합니다.

🛠️ 2. HTTP Request 노드 주요 설정 완벽 분석

HTTP Request 노드의 설정은 매우 직관적이지만, 각 옵션의 의미를 정확히 아는 것이 중요합니다. 하나씩 자세히 살펴보겠습니다.

2.1. Method (메서드) 🚀

HTTP 요청의 종류를 정의합니다. API의 목적에 따라 적절한 메서드를 선택해야 합니다.

  • GET (조회): 특정 리소스의 정보를 가져올 때 사용합니다. 데이터를 변경하지 않습니다.
    • 예시: 웹사이트 게시글 목록 조회, 날씨 정보 조회. 📚
  • POST (생성): 새로운 리소스를 생성할 때 사용합니다. 주로 요청 바디(Body)에 생성할 데이터를 담아 보냅니다.
    • 예시: 새 게시글 작성, 회원 가입, Slack 메시지 전송. ✍️
  • PUT (전체 수정): 특정 리소스의 전체 내용을 덮어쓸 때 사용합니다. 만약 해당 리소스가 없으면 생성하기도 합니다.
    • 예시: 사용자 프로필 전체 업데이트. 🔄
  • DELETE (삭제): 특정 리소스를 삭제할 때 사용합니다.
    • 예시: 게시글 삭제, 사용자 계정 탈퇴. 🗑️
  • PATCH (부분 수정): 특정 리소스의 일부 내용만 수정할 때 사용합니다. PUT과 달리 전체를 덮어쓰지 않습니다.
    • 예시: 게시글 제목만 수정, 사용자 이메일만 변경. ✂️

2.2. URL 🌐

요청을 보낼 대상 API의 주소입니다. https://api.example.com/data 와 같은 형식입니다. 이 URL은 고정된 값일 수도 있고, 이전 노드에서 받은 데이터를 기반으로 동적으로 생성될 수도 있습니다.

  • 예시: https://api.openweathermap.org/data/2.5/weather (날씨 API)
  • 동적 URL 예시: https://api.example.com/users/{{ $json.userId }} (이전 노드의 userId를 사용)

2.3. Headers (헤더) 🏷️

요청에 대한 추가 정보를 담는 곳입니다. 인증 정보, 요청 바디의 타입 등을 주로 설정합니다.

  • Content-Type: 요청 바디에 담긴 데이터의 형식을 명시합니다.
    • application/json: JSON 형식의 데이터를 보낼 때. (가장 흔함)
    • application/x-www-form-urlencoded: HTML 폼 데이터를 보낼 때.
    • multipart/form-data: 파일 업로드 등 여러 종류의 데이터를 보낼 때.
    • text/plain: 일반 텍스트를 보낼 때.
  • Authorization: API 인증 정보를 담습니다.
    • Bearer YOUR_API_TOKEN: 가장 흔한 토큰 기반 인증 (Bearer Token).
    • Basic base64(username:password): 기본 인증 (Basic Authentication).
  • Custom Headers: 특정 API가 요구하는 고유한 헤더를 추가할 수 있습니다.

2.4. Query Parameters (쿼리 파라미터) ❓

URL 뒤에 ?key=value&key2=value2 형식으로 붙는 값들입니다. 주로 GET 요청 시 특정 조건을 필터링하거나 추가 정보를 전달할 때 사용됩니다.

  • 예시: https://api.example.com/products?category=electronics&limit=10
    • categorylimit가 쿼리 파라미터입니다.
  • n8n에서는 Key-Value 쌍으로 쉽게 추가할 수 있습니다.

2.5. Body (바디) 📦

POST, PUT, PATCH 요청 시 서버로 보낼 실제 데이터가 담기는 부분입니다.

  • JSON: 가장 일반적이며, 구조화된 데이터를 보낼 때 사용합니다.
    {
      "name": "Jane Doe",
      "email": "jane.doe@example.com"
    }

    n8n에서는 JavaScript 객체 형태로 입력하고, Content-Typeapplication/json으로 설정하면 자동으로 JSON으로 변환하여 전송합니다.

  • Form URL Encoded: 웹 폼에서 데이터를 전송할 때 사용됩니다. name=Jane+Doe&email=jane.doe%40example.com
  • Multipart Form Data: 파일 업로드 시에 주로 사용됩니다. 텍스트 필드와 파일 데이터를 함께 보낼 수 있습니다.
  • Raw: XML, 특정 포맷의 텍스트 등 어떤 특정 포맷으로 데이터를 그대로 보낼 때 사용합니다.
  • Binary Data: 이미지, 동영상 파일 등 순수 바이너리 데이터를 보낼 때 사용합니다. n8n의 이전 노드에서 파일 데이터를 받아서 그대로 전송할 수 있습니다. 📁

2.6. Authentication (인증) 🔐

API에 접근하기 위한 인증 방식을 설정합니다. n8n에는 전용 Credential 노드들이 많지만, HTTP Request 노드 자체에서도 간단한 인증을 처리할 수 있습니다.

  • Pre-defined Credentials: n8n에 미리 설정해 둔 API 키, OAuth2 등의 Credential을 선택하여 사용할 수 있습니다. 이 방법을 가장 권장합니다.
  • Header Auth: Authorization 헤더에 직접 토큰을 입력하는 방식 (위 Headers 섹션 참고).
  • Query Auth: API 키를 쿼리 파라미터로 전달하는 방식.
  • Basic Auth: 사용자 이름과 비밀번호를 전달하는 방식.

2.7. Options (고급 옵션) ⚙️

  • Timeout (타임아웃): 응답을 기다리는 최대 시간(밀리초)을 설정합니다. 응답이 지연될 경우 워크플로우가 멈추는 것을 방지합니다.
  • Follow Redirects (리다이렉트 따라가기): 서버가 다른 URL로 리다이렉트할 경우 자동으로 해당 URL로 다시 요청을 보낼지 여부를 설정합니다.
  • Reject Unauthorized (SSL 인증서 검증): HTTPS 통신 시 SSL 인증서 유효성을 검증할지 여부를 설정합니다. false로 설정하면 자체 서명된 인증서나 유효하지 않은 인증서도 허용하지만, 보안상 권장되지 않습니다. 개발 환경에서만 사용하세요. ⚠️
  • Proxy (프록시): 특정 프록시 서버를 통해 요청을 보낼 때 설정합니다.

💡 3. HTTP Request 노드 실전 활용 예시

이제 실제 시나리오를 통해 HTTP Request 노드를 어떻게 활용하는지 살펴보겠습니다.

3.1. 예시 1: OpenWeatherMap API로 현재 날씨 정보 가져오기 (GET 요청) 🌤️

가장 간단한 GET 요청 예시입니다. 특정 도시의 현재 날씨 정보를 가져옵니다.

  1. OpenWeatherMap API Key 발급: OpenWeatherMap 에 가입하고 API Key를 발급받습니다.
  2. HTTP Request 노드 추가: 워크플로우에 HTTP Request 노드를 추가합니다.
  3. 설정:
    • Method: GET
    • URL: https://api.openweathermap.org/data/2.5/weather
    • Query Parameters:
      • q: Seoul (원하는 도시 이름)
      • appid: YOUR_OPENWEATHERMAP_API_KEY (발급받은 API 키)
      • units: metric (온도 단위를 섭씨로 받기 위함)
    • Headers: (별도 설정 필요 없음)
    • Body: (GET 요청이므로 설정 필요 없음)
  4. 실행: 노드를 실행하면 다음과 같은 JSON 응답을 받을 수 있습니다.
    {
      "coord": { "lon": 126.9778, "lat": 37.5683 },
      "weather": [
        { "id": 800, "main": "Clear", "description": "clear sky", "icon": "01d" }
      ],
      "base": "stations",
      "main": {
        "temp": 25.5,
        "feels_like": 25.4,
        "temp_min": 24.0,
        "temp_max": 27.0,
        "pressure": 1012,
        "humidity": 60
      },
      // ... 기타 정보
    }

    이제 이 데이터를 다음 노드(예: Set 노드로 필요한 정보만 추출, Send Email 노드로 이메일 발송 등)에서 활용할 수 있습니다.

3.2. 예시 2: Notion 데이터베이스에 새 항목 추가 (POST 요청) 📝

사용자가 웹사이트에서 설문지를 제출하면 Notion 데이터베이스에 자동으로 항목을 추가하는 시나리오입니다. (이전 노드에서 설문지 데이터를 받는다고 가정)

  1. Notion API 연동 준비:
    • Notion에서 새 데이터베이스를 생성합니다.
    • Internal integration을 생성하고 API Token을 복사합니다.
    • 생성한 인테그레이션을 데이터베이스에 Invite 합니다.
    • 데이터베이스 ID를 복사합니다.
  2. HTTP Request 노드 추가: 워크플로우에 HTTP Request 노드를 추가합니다.
  3. 설정:
    • Method: POST
    • URL: https://api.notion.com/v1/pages
    • Headers:
      • Content-Type: application/json
      • Authorization: Bearer YOUR_NOTION_API_TOKEN (발급받은 API 토큰)
      • Notion-Version: 2022-06-28 (Notion API 버전)
    • Body (JSON): 이 부분이 중요합니다. Notion API의 JSON 구조에 맞춰 데이터를 구성해야 합니다.
      {
        "parent": {
          "database_id": "YOUR_NOTION_DATABASE_ID"
        },
        "properties": {
          "제목": {
            "title": [
              {
                "text": {
                  "content": "{{ $json.surveyTitle }}" // 이전 노드에서 받은 설문지 제목
                }
              }
            ]
          },
          "응답자": {
            "rich_text": [
              {
                "text": {
                  "content": "{{ $json.responderName }}" // 이전 노드에서 받은 응답자 이름
                }
              }
            ]
          },
          "점수": {
            "number": {{ $json.score }} // 이전 노드에서 받은 점수 (숫자 타입)
          }
          // Notion 데이터베이스의 컬럼 이름에 맞게 추가
        }
      }

      {{ $json.surveyTitle }}와 같은 문법은 n8n의 표현식(Expression)으로, 이전 노드의 데이터를 동적으로 가져와 채워 넣습니다.

  4. 실행: 노드를 실행하면 Notion 데이터베이스에 새로운 항목이 추가되는 것을 확인할 수 있습니다.

3.3. 예시 3: Slack으로 자동 알림 메시지 보내기 (POST 요청) 💬

특정 이벤트(예: 새 주문 발생, 에러 발생)가 발생했을 때 Slack 채널로 알림 메시지를 보냅니다.

  1. Slack Incoming Webhook URL 생성: Slack API Incoming Webhooks 페이지에서 새 Webhook URL을 생성하고 복사합니다.
  2. HTTP Request 노드 추가: 워크플로우에 HTTP Request 노드를 추가합니다.
  3. 설정:
    • Method: POST
    • URL: YOUR_SLACK_WEBHOOK_URL (Slack에서 발급받은 Webhook URL)
    • Headers:
      • Content-Type: application/json
    • Body (JSON):
      {
        "text": "새로운 이벤트 발생! 🎉\n\n이벤트 타입: {{ $json.eventType }}\n세부 내용: {{ $json.eventDetails }}"
      }

      text 필드에 메시지 내용을 담습니다. \n으로 줄바꿈을 할 수 있고, {{ }}를 사용하여 이전 노드의 데이터를 포함시킬 수 있습니다.

  4. 실행: 노드를 실행하면 지정된 Slack 채널로 메시지가 전송됩니다.

💡 4. 꿀팁 및 주의사항

  • 에러 처리 (Error Handling) 🚫:
    • API 요청은 실패할 수 있습니다 (네트워크 문제, 잘못된 요청, 인증 오류 등). HTTP Request 노드 다음에 IF 노드Try/Catch 노드를 사용하여 응답 상태 코드(Status Code)를 확인하고 적절히 에러를 처리하세요.
    • 2xx 코드는 성공, 4xx는 클라이언트 오류, 5xx는 서버 오류를 의미합니다.
  • API Rate Limiting (요청 제한) ⏳:
    • 많은 API는 짧은 시간 내에 보낼 수 있는 요청 수에 제한을 둡니다. 이를 Rate Limiting이라고 합니다.
    • 대량의 요청을 보낼 때는 Split In Batches 노드Wait 노드를 함께 사용하여 요청 사이에 지연 시간을 두어 Rate Limit에 걸리지 않도록 주의하세요.
  • 보안 (Security) 🔑:
    • API 키나 민감한 정보는 워크플로우 내에 직접 하드코딩하지 마세요. n8n의 Credentials 기능을 사용하거나, Environment Variables (환경 변수)로 관리하여 보안을 강화하세요.
  • 디버깅 (Debugging) 🐞:
    • HTTP Request 노드를 테스트할 때는 항상 Execute Workflow 버튼을 누르고, Output 탭을 확인하여 API 응답을 면밀히 검토하세요. 에러 메시지나 응답 본문을 통해 문제의 원인을 파악할 수 있습니다.
    • Headers, Query Parameters, Body 등을 잘못 설정했을 때 400 Bad Request 에러가 자주 발생합니다. API 문서(Documentation)를 꼼꼼히 확인하세요.
  • 동적 데이터 활용 (Dynamic Data) ✨:
    • {{ $json.propertyName }} 또는 {{ $node["Node Name"].json.propertyName }}과 같은 표현식(Expression)을 사용하여 이전 노드에서 받은 데이터를 URL, 헤더, 바디 등 HTTP Request 노드의 어떤 필드에도 유연하게 적용할 수 있습니다. 이것이 n8n 자동화의 핵심입니다!

🎯 결론

n8n의 HTTP Request 노드는 여러분의 자동화 워크플로우에 무한한 가능성을 열어주는 강력한 도구입니다. 웹상의 거의 모든 서비스와 데이터를 주고받을 수 있게 함으로써, 여러분의 비즈니스 프로세스를 혁신하고 시간과 노력을 절약할 수 있습니다.

처음에는 복잡하게 느껴질 수 있지만, 몇 가지 예시를 따라 해보고 다양한 API 문서를 살펴보면서 직접 시도해보면 금방 익숙해질 것입니다. 두려워하지 말고, 이 강력한 노드를 활용하여 여러분만의 멋진 자동화 워크플로우를 만들어나가세요! 🌟

궁금한 점이 있다면 언제든지 댓글로 질문해주세요! 행복한 자동화 생활 되세요! 😊 D

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다