# 📐 n8n 노드 선택 표준 — Supabase 노드 금지 & HTTP Request 통일

> # n8n 노드 선택 표준 > 등록일: 2026-02-20 | 등록 배경: bawee(2.4.8) → bizspring(2.8.3) 이식 시 Supabase 노드 typeVersion 충돌로 Publish 불가 경험 --- ## 핵심 원칙 **외부 서비스 연동은 전부 HTTP R

## 핵심 요약


# n8n 노드 선택 표준

> 등록일: 2026-02-20 | 등록 배경: bawee(2.4.8) → bizspring(2.8.3) 이식 시 Supabase 노드 typeVersion 충돌로 Publish 불가 경험

---

## 핵심 원칙

**외부 서비스 연동은 전부 HTTP Request 노드로 통일한다.**

---

## Supabase 노드 사용 금지

```
⛔ n8n-nodes-base.supabase 사용 금지
✅ HTTP Request 노드 + AP-01 헤더 패턴으로 대체
```

### 금지 이유

| 문제 | 내용 |
|------|------|
| typeVersion 종속 | bawee(2.4.8)에서 만든 typeVersion 1.2가 bizspring(2.8.3)에서 "Install this node" 오류 |
| Publish 불가 | parameters: {} 상태에서 2.8 validation이 더 엄격해 Activate 차단 |
| 환경 이식성 | WF를 bawee ↔ bizspring 간 복사 시 크레덴셜 재설정 + typeVersion 재조정 필요 |
| 버전 업 리스크 | n8n 버전 업그레이드마다 Supabase 노드 스펙 변경 가능성 |

### 대체 패턴 (HTTP Request + AP-01)

```json
{
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 4.2,
  "parameters": {
    "method": "GET",
    "url": "={{ $json.SB_URL }}/rest/v1/테이블명",
    "sendHeaders": true,
    "headerParameters": {
      "parameters": [
        { "name": "apikey",        "value": "={{ $json.sbKey }}" },
        { "name": "Authorization", "value": "=Bearer {{ $json.sbKey }}" },
        { "name": "Content-Type",  "value": "application/json" }
      ]
    },
    "sendQuery": true,
    "queryParameters": {
      "parameters": [
        { "name": "select", "value": "원하는 컬럼" },
        { "name": "필터키", "value": "=eq.{{ $json.값 }}" }
      ]
    }
  }
}
```

---

## 노드 선택 기준표

| 작업 | 금지 | 권장 |
|------|------|------|
| Supabase SELECT | ~~supabase 노드~~ | HTTP Request (GET) |
| Supabase INSERT | ~~supabase 노드~~ | HTTP Request (POST) |
| Supabase UPDATE | ~~supabase 노드~~ | HTTP Request (PATCH) |
| Supabase UPSERT | ~~supabase 노드~~ | HTTP Request (POST + Prefer: resolution=merge-duplicates) |
| 외부 API 호출 | ~~Code 노드 fetch()~~ | HTTP Request 노드 (AP-02) |
| 데이터 변환/계산 | - | Code 노드 (JS, Python) |
| 조건 분기 | - | IF 노드 |
| 병렬 처리 | - | SplitInBatches + Merge(append) |

---

## Supabase HTTP Request 패턴 모음

### SELECT (GET)
```
GET {SB_URL}/rest/v1/{table}?select=col1,col2&filter=eq.value
Headers: apikey / Authorization: Bearer / Content-Type
```

### INSERT (POST)
```
POST {SB_URL}/rest/v1/{table}
Headers: + Prefer: return=representation
Body: { "col1": "val1", "col2": "val2" }
```

### UPDATE (PATCH)
```
PATCH {SB_URL}/rest/v1/{table}?id=eq.{id}
Headers: + Prefer: return=representation
Body: { "col1": "new_val" }
```

### UPSERT (POST)
```
POST {SB_URL}/rest/v1/{table}
Headers: + Prefer: resolution=merge-duplicates,return=representation
Body: { "id": "...", "col1": "val1" }
```

---

## 관련 안티패턴

- AP-01: Supabase HTTP → apikey + Authorization: Bearer + Content-Type 3개 헤더 필수
- AP-02: Code 노드에서 fetch() 금지 → HTTP Request 노드
- AP-10: bawee(인프라) vs bizspring(서비스) 인스턴스 명시

---

*project_code: COMMON | tags: n8n, 개발표준, Supabase, HTTP Request*

## FAQ


---
출처: https://bizspring.ai/kb/ref/khub/common-n8n-노드-선택-표준-supabase-노드-금지-http-request-통일 · 최종 갱신 2026-08-24T11:53:44.5731+00:00
