4.4 KiB
4.4 KiB
Lab 02 · n8n 화면 익히기와 첫 워크플로우
- 관련 강의: 2단계 · n8n 실습 환경과 기본 설정
- 소요 시간: 약 45분
- 준비: SETUP-N8N.md 완료, Lab 02A(브라우저에서 직접 만들기) 완료, 브라우저에서 http://localhost:5678 로그인
1. 워크플로우 가져오기 (5분)
- 왼쪽 위 + (Create) → Workflow로 빈 워크플로우를 엽니다.
- 오른쪽 위 ⋯ (더보기) → Import from File... 을 선택합니다.
Last3Mon/65/n8n/workflows/01-condition-basics.json을 고릅니다. Windows 파일 선택 창에서는 주소창에\\wsl$\Ubuntu\home\<사용자>\aio-01d4-stu\Last3Mon\65\n8n\workflows를 입력하면 WSL 폴더로 이동합니다.- 오른쪽 위 Save를 누릅니다.
같은 방법으로 02-webhook-router.json도 새 워크플로우로 가져와 둡니다.
2. Manual Trigger + IF: 65-01 Condition basics (15분)
flowchart LR
T(["Start<br/>Manual Trigger"]) --> C["Sample requests<br/>Code"] --> I{"Is urgent?<br/>IF"}
I -->|true| U["Urgent route<br/>Set"]
I -->|false| N["Normal route<br/>Set"]
- 아래쪽 Execute workflow 버튼을 누릅니다.
- 각 노드를 더블클릭해 INPUT / OUTPUT 데이터를 확인합니다.
확인할 것
| 질문 | 내 답 |
|---|---|
Sample requests가 만든 항목(item)은 몇 개인가? |
|
Is urgent?의 true 출력과 false 출력에는 각각 몇 개의 항목이 있는가? |
|
Urgent route 출력에 새로 생긴 필드 두 개는? |
n8n은 항목(item) 여러 개를 한 번에 흘려보냅니다. IF 노드는 항목마다 조건을 검사해 두 출력으로 나눕니다.
직접 바꿔 보기
Is urgent?노드를 열고 조건을{{ $json.text }}contains계정으로 바꿔 다시 실행합니다. 결과가 어떻게 달라지나요?- 원래 조건(
priorityequalsurgent)으로 되돌립니다.
3. Webhook Trigger + Switch: 65-02 Webhook request router (20분)
flowchart LR
W(["Request webhook<br/>POST /request-route"]) --> H{"Has text?<br/>IF"}
H -->|false| R0["Reject empty<br/>400"]
H -->|true| K["Keyword classify<br/>Code"] --> S{"Route by category<br/>Switch"}
S -->|account·network·device·software| T1["Team ...<br/>Set"]
S -->|other| T5["Team other<br/>Set"]
T1 --> R["Send route<br/>Respond"]
T5 --> R
3-1. 테스트 실행 (Test URL)
Request webhook노드를 열고 Test URL을 복사합니다. (http://localhost:5678/webhook-test/request-route)- 노드 화면의 Listen for test event를 누른 상태에서 WSL 터미널에서 요청을 보냅니다.
curl -s -X POST http://localhost:5678/webhook-test/request-route \
-H 'Content-Type: application/json' -d '{"user":"kim","text":"VPN 접속이 계속 끊겨요"}'
- 캔버스에서 실제로 지나간 길이 초록색으로 표시되는지 확인합니다.
3-2. 게시 후 실행 (Production URL)
- 오른쪽 위 Publish(게시)를 켭니다.
- 이제
/webhook/(test 없음) 주소로 언제든 호출할 수 있습니다.
for t in "VPN 접속이 계속 끊겨요" "모니터가 안 켜져요" "점심 메뉴 추천해줘" ""; do
curl -s -w " [HTTP %{http_code}]\n" -X POST http://localhost:5678/webhook/request-route \
-H 'Content-Type: application/json' -d "{\"user\":\"kim\",\"text\":\"$t\"}"
done
- 왼쪽 메뉴 Executions에서 방금 실행된 기록 4건을 열어 봅니다.
| 입력 | 응답의 team 또는 오류 |
지나간 길 |
|---|---|---|
| VPN 접속이 계속 끊겨요 | ||
| 모니터가 안 켜져요 | ||
| 점심 메뉴 추천해줘 | ||
| (빈 문자열) |
3-3. 직접 바꿔 보기
Keyword classify의 규칙과 Route by category에 "보안" 분류를 추가해 보세요.
- Code 노드
rules에{ category: 'security', words: ['해킹', '피싱', '바이러스'] }추가 - Switch 노드에
security규칙 추가, 새 Set 노드Team security(team:보안 담당) 연결 - 저장 후
"피싱 메일을 받은 것 같아요"로 호출해 확인
확인
- 두 워크플로우를 가져와 저장했다.
- IF 노드의 true/false 출력 항목 수를 확인했다.
- Test URL과 Production URL의 차이를 직접 실행해 보았다.
- Executions에서 실행 기록을 열어 보았다.