n8n实战营Day2:复杂逻辑控制·HTTP请求+条件分支节点实操

n8n实战营Day2:复杂逻辑控制·HTTP请求+条件分支节点实操

经过Day1的基础铺垫,我们已经能搭建线性工作流,但企业实际场景中,"多场景判断""API调用优化""异常兼容"才是自动化的核心诉求。本节课聚焦高频节点的进阶用法------HTTP请求节点的GET/POST配置技巧、IF与Switch的分支逻辑设计,最终通过"地址转经纬度"实战,掌握复杂逻辑的落地方法,让工作流从"能跑"升级为"好用"。

一、高频节点深度解析(二):HTTP请求节点·API调用的核心

HTTP请求节点是n8n连接外部系统的"桥梁",无论是调用高德地图API,还是对接企业内部系统,都离不开它。其中GET与POST是最常用的请求方法,90%的API调用问题都源于二者配置混淆,本节从配置差异、参数优化、避坑点三个维度彻底讲透。

1.1 GET vs POST:配置差异与适用场景

核心区别:参数传递位置不同------GET参数拼在URL中,POST参数放在请求体里,这直接决定了它们的配置逻辑和使用场景。

配置项 GET方法(查询数据) POST方法(提交数据)
参数位置 Params面板(自动拼入URL) Body面板(隐藏在请求体中)
请求体格式 无(参数暴露在URL) 常用JSON/Form-Data(需与API一致)
参数大小限制 约2KB(URL长度限制) 无明确限制(适合大体积数据)
适用场景 查询类API(如地址转经纬度、天气查询) 提交类API(如表单数据上传、订单创建)
n8n配置关键 Params面板添加"key=值" 先选Body类型,再填参数

1.2 请求头与参数优化:提升API调用成功率

很多新手调用API时会遇到"403禁止访问""400参数错误",本质是请求头或参数配置不规范,以下是实战优化技巧:

  • **请求头配置(Headers)**必加字段:User-Agent(模拟浏览器请求,避免被API拦截,值可填"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36")

  • 按需添加:Content-Type(POST请求必加,JSON格式填"application/json",Form表单填"application/x-www-form-urlencoded")

  • 认证相关:如API需要Token,添加Authorization: Bearer 你的Token

参数优化技巧URL编码:GET请求中若参数含中文/特殊字符(如"&""空格"),勾选Params面板"Encode"自动编码(避免参数截断)

默认值设置:对可选参数添加默认值(如地址转经纬度API的"city"参数,默认填"北京"避免空值报错)

参数复用:用n8n变量引用上游数据(如{``{ $node["Set"].json["address"] }}),避免硬编码

1.3 HTTP请求节点工作流程图

结构图格式[
查询数据 提交数据 成功 失败 HTTP请求节点配置 选择请求方法 GET方法 POST方法 Params面板填参数勾选Encode编码 选择Body类型(JSON/Form-Data) 配置请求头(User-Agent必加) 测试调用查看Output数据 传递数据至下游节点 检查参数/请求头/API密钥

]

文字版逻辑:先根据API类型选GET/POST,再按方法特性配置参数,添加必要请求头后测试,成功则传数据,失败则排查参数或权限问题。

二、条件分支节点:IF与Switch·多场景判断的核心

当工作流需要"根据不同条件走不同流程"时(如地址转经纬度后,根据城市分发给不同区域负责人),IF和Switch节点就是"交通指挥官"。二者核心差异在于分支数量------IF适合二分支,Switch适合多分支。

2.1 节点核心逻辑与配置

  • **IF节点:二分支判断(是/否)**核心逻辑:满足条件走"True"分支,不满足走"False"分支

  • 配置步骤:

  1. 选择判断类型(如"String"字符串判断);
  2. 设置左值(如{``{ $node["HTTP Request"].json["city"] }});
  3. 选择判断运算符(如"Equals"等于);
  4. 设置右值(如"北京")
  • 适用场景:简单条件判断(如数据是否为空、状态是否正常)

**Switch节点:多分支判断(匹配多个值)**核心逻辑:将"判断值"与多个"目标值"匹配,匹配成功则走对应分支,支持"默认分支"(无匹配时执行)

配置步骤:

  1. 设置判断值(如{``{ $node["HTTP Request"].json["city"] }});
  2. 添加分支:设置"匹配值"(如"北京""上海""广州");
  3. 配置默认分支(如"其他城市")

避坑点:匹配值需与判断值类型一致(如字符串不能与数字匹配),建议用"Output"复制上游数据格式

适用场景:多条件判断(如按城市、按订单状态分分支)

2.2 条件分支逻辑结构图

结构图格式[
二分支 多分支 条件:城市==北京 条件不满足 匹配:北京 匹配:上海 无匹配 上游数据 (如城市:北京) 选择分支节点 IF节点 Switch节点 True分支(北京区域处理) False分支(其他区域处理) 分支1(北京负责人) 分支2(上海负责人) 默认分支(全国负责人)

]

文字版逻辑:根据分支数量选择节点,IF实现"是非"判断,Switch实现"多值匹配"判断,确保不同条件的数据流走向正确。

三、实操:调用高德地图API实现"地址转经纬度"

结合HTTP请求和条件分支节点,我们搭建一个企业常用场景:输入任意地址,调用高德地图API转换为经纬度,再根据城市判断分支,最终输出结构化结果。

3.1 准备工作

  • n8n环境(本地/云部署均可);

  • 高德地图API密钥:登录高德开放平台→创建应用→添加"地理编码"API→获取密钥(免费版足够测试);

  • 测试地址:如"北京市朝阳区光华路甲8号"。

3.2 分步搭建:4个节点完成全流程

步骤1:添加"手动触发"节点(测试用)
  1. 新建工作流→添加"Manual Trigger"节点;

  2. 配置"Additional Fields"→添加字段"address"(文本类型),默认值填测试地址;

  3. 点击「Execute Node」测试,确认输出包含address字段。

步骤2:添加"HTTP Request"节点(调用高德API)
  1. 点击手动触发节点右侧「+」→搜索"HTTP Request"→添加节点;

  2. 核心配置:

  • Method:选择"GET"(地理编码是查询类API);
  • URL:https://restapi.amap.com/v3/geocode/geo(高德地理编码API地址);
  • Params面板添加3个参数:
    ① key:值为你的高德API密钥;
    ② address:值为{``{ $node["Manual Trigger"].json["address"] }}(引用手动触发的地址);
    ③ city:值为""(空值,支持全国地址查询);
  • Headers面板添加:User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
  1. 点击「Execute Node」测试,查看Output→data→geocodes[0],确认包含location(经纬度)、city(城市)字段。
步骤3:添加"Set"节点(提取核心数据)
  1. 添加"Set"节点→选择"Keep Only Specified Fields";

  2. 添加4个字段,引用HTTP节点的输出数据:

    ① 原始地址:{``{ $node["Manual Trigger"].json["address"] }}

    ② 城市:{``{ $node["HTTP Request"].json["geocodes"][0]["city"] }}

    ③ 经纬度:{``{ $node["HTTP Request"].json["geocodes"][0]["location"] }}

    ④ 格式化地址:{``{ $node["HTTP Request"].json["geocodes"][0]["formatted_address"] }}

  3. 测试节点,确认输出仅保留这4个核心字段。

步骤4:添加"Switch"节点(按城市分分支)
  1. 添加"Switch"节点→设置"Value to Match"为{``{ $node["Set"].json["城市"] }}

  2. 添加分支:

    ① 分支1:Match Value填"北京市",添加"Logger"节点输出"北京区域地址:XXX";

    ② 分支2:Match Value填"上海市",添加"Logger"节点输出"上海区域地址:XXX";

    ③ 点击「Add Default Case」,添加"Logger"节点输出"其他区域地址:XXX";

  3. 全流程测试:修改手动触发节点的address为"上海市浦东新区张江高科技园区",执行后查看Logger节点输出,确认分支匹配正确。

3.3 避坑重点复盘

复制代码
  1. API调用403错误:检查API密钥是否正确,是否为"地理编码"API添加密钥(而非其他API);
  2. 经纬度字段为空:确认address参数是否传递成功,高德API不支持模糊地址(如"XX市"需具体到街道);
  3. Switch分支不匹配:检查"匹配值"与Set节点的"城市"字段格式是否一致(如是否带"市"字)。

四、核心总结与下节预告

4.1 核心知识点

  • HTTP请求节点:GET查数据(参数在URL)、POST传数据(参数在请求体),请求头加User-Agent提升成功率;

  • 条件分支:IF二分支(是非判断)、Switch多分支(值匹配),根据分支数量选型;

  • 数据引用:始终通过{``{ $node["节点名"].json["字段名"] }}引用数据,避免硬编码。

4.2 下节预告

Day2课时2将聚焦"工作流逻辑进阶",解析Loop循环节点、Merge聚合节点的使用技巧,带你实现"批量读取Excel数据并逐个校验"的工作流,掌握批量数据处理能力。

这篇博文兼顾了节点原理讲解与实操落地,结构图采用CSDN兼容性强的语法。你若需要替换API(如改用百度地图)或调整分支逻辑(如按经纬度范围判断),可以随时告诉我,我会优化对应内容。

相关推荐
丝斯20111 小时前
AI学习笔记整理(22)—— AI核心技术(深度学习6)
人工智能·笔记·学习
Aerelin1 小时前
爬虫playwright中的等待机制
前端·爬虫·python
liushangzaibeijing1 小时前
用 bert-base-chinese 做一个能上线的 AI 应用
人工智能·bert-base
h***04771 小时前
IEEE 1588:电信网络的精确时间协议 (PTP)
网络
依米s1 小时前
2021年人工智能大会核心议题《智联世界 众智成城》
人工智能·waic·人工智能大会+
数字冰雹1 小时前
数据中心运维新革命:图观数字孪生引擎的实战应用
人工智能·数据可视化
卡比巴拉—林1 小时前
Python print()函数详讲
开发语言·python
i***58671 小时前
Java开发的AI应用框架简述——LangChain4j、Spring AI、Agent-Flex
java·人工智能·spring
Han.miracle1 小时前
JavaEE-- 网络编程 http请求报头
运维·服务器·网络·网络协议·计算机网络·http