D: 🚀 n8n의 HTTP Node는 API 통합의 핵심 도구입니다. 하지만 단순한 GET/POST 요청을 넘어서 다이나믹한 데이터 처리와 견고한 에러 핸들링이 필요하다면? 이 가이드에서 모든 것을 알려드리겠습니다!
🔍 HTTP Node 기본 구조 재확인
{
"url": "https://api.example.com/data",
"method": "GET",
"headers": {
"Authorization": "Bearer {{$node["Credential"].json["access_token"]}}"
},
"qs": {
"page": 1
}
}
- 동적 값 주입:
{{ }}
문법으로 이전 노드의 출력값 참조 가능 - 자격 증명 관리: Credential 노드와 연동해 보안 유지
🌟 다이나믹 요청을 위한 5가지 필살기
-
URL 파라미터 실시간 구성
// Function Node에서 동적 URL 생성 const region = $input.all()[0].json.region || "us-east-1"; return { url: `https://${region}.api.service.com/v2/query` };
-
헤더에 조건부 값 설정
"headers": { "X-API-Version": "{{$node["Config"].json["useBeta"] ? 'v2-beta' : 'v1'}}" }
-
페이징 처리 자동화 (While 노드 활용)
// 초기 요청 "qs": { "page": 1, "limit": 50 }
// 다음 페이지 요청 “qs”: { “page”: “{{$node[“Previous”].json[“meta”][“nextPage”]}}”, “limit”: 50 }
4. **멀티파트 파일 업로드**
```json
"body": {
"file": {
"value": "={{$binary["fileId"]}}",
"options": {
"filename": "report.pdf",
"contentType": "application/pdf"
}
}
}
- OAuth 2.0 자동 갱신
// OAuth 토큰 만료 시 재발급 로직 if ($node["Auth"].json["expires_in"] 3600000) { state.count = 0; state.lastReset = Date.now(); }
if (state.count >= 1000) { throw new Error(‘Hourly limit exceeded’); }
state.count++; $workflow.setState(‘apiCalls’, state);
**7. 연결 불안정성 대비**
```json
"options": {
"keepAlive": true,
"keepAliveMsecs": 5000
}
🛠️ 실제 사례별 솔루션
CASE 1: JWT 토큰 자동 갱신
// Function Node에서 토큰 검증
const token = $node["Auth"].json["token"];
const payload = JSON.parse(Buffer.from(token.split('.')[1], 'base64').toString());
if (payload.exp * 1000 item.json.id).join(',')}}"
}
📊 모니터링 설정
에러 알림 워크플로우:
- HTTP Request Node → 2. Error Trigger → 3. Slack/SMS Node
// Error Trigger 설정
{
"continueOnFail": true,
"errorOn": "404, 500-599"
}
🔧 마무리: n8n의 HTTP Node는 단순한 요청 도구를 넘어 완벽한 API 통합 플랫폼이 될 수 있습니다. 이 가이드의 기법들을 적용하면 95% 이상의 복잡한 시나리오를 해결할 수 있을 거예요!
궁금한 점이 있다면 댓글로 질문해주세요. 함께 고민해봅시다! 💬