必须正确配置HTTP请求节点才能调用外部服务:先填带https://的完整URL激活节点,再选匹配API文档的请求方法,手动添加Content-Type、Accept等关键请求头,按需选用URL参数、JSON请求体或动态URL传参,设置超时与重试,并用JSONPath安全提取响应字段。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Dify工作流中让AI调用天气、支付、地图等外部服务,必须正确配置HTTP请求节点——它不是插上就跑的黑盒,一个错位的Content-Type或漏掉的协议头,就会让整个工作流卡在405或415错误里。
添加并启用HTTP请求节点
在工作流画布左侧工具栏找到“HTTP请求”节点,直接拖拽到画布空白处。节点默认呈灰色不可用状态,【必须先完成URL配置才能激活】。鼠标悬停节点时若显示“端点未配置”,说明尚未进入下一步。
点击节点,在右侧属性面板中找到“URL”输入框,输入完整地址,例如https://api.weather.com/v3/weather/now。注意:必须包含https://前缀,只写api.weather.com/...会导致节点持续灰显且无法保存。
选择请求方法与设置关键请求头
在同一个属性面板中,下拉选择“请求方法”。GET用于查询,POST用于提交数据,PUT用于更新,DELETE用于移除——【必须与API文档严格一致,选错即返回405】。
展开“请求头”区域,手动添加至少两项:
第一行键填Content-Type,值填application/json(若接口要求表单则填multipart/form-data);
第二行键填Accept,值填application/json。这两项缺一不可,否则服务器可能拒绝解析或返回HTML错误页而非JSON。
如需认证,第三行键填Authorization,值填Bearer {{#env.ACCESS_TOKEN#}}——环境变量名必须全小写、无空格,且已在工作流环境变量中预先定义。
传递参数:三种方式按需选用
方法一:URL参数(适合GET请求)
在“查询参数”区域点击“+添加”,键填geocode,值填{{city_lat}},{{city_lng}}。变量名需与上游节点输出字段完全一致,大小写敏感。
方法二:JSON请求体(适合POST/PUT)
切换到“请求体”选项卡,选择“JSON”,粘贴结构化内容:{ "q": "{{#sys.query#}}", "units": "metric", "key": "{{#env.WEATHER_API_KEY#}}" }。
注意单引号包裹整个字符串,否则YAML解析会失败。
方法三:动态拼接URL(高风险但必要时可用)
直接在URL输入框中写:{{#env.BASE_URL#}}/v1/forecast?city={{city}}&lang=zh。
⚠️此方式无法校验变量是否存在,若{{city}}为空,生成的URL将含?city=&lang=zh,部分API会因此返回400错误。
配置超时与重试保障稳定性
第一步:在“高级设置”中展开“超时设置”,将“连接超时”和“读取超时”均设为15秒。设太短易因网络抖动误判失败,设太长会让用户干等数十秒。
第二步:勾选“启用重试”,设置最大重试次数为2,延迟间隔为1000毫秒。这能有效应对瞬时网络波动,但对4xx类业务错误(如401未授权)无效。
第三步:确认“失败后继续执行”处于关闭状态。开启它会使工作流跳过错误继续往下走,导致下游节点拿到空数据却毫无感知。
提取响应数据并安全输出
HTTP请求成功后,响应体默认存为response变量。在后续节点(如LLM或条件分支)中,用JSONPath语法提取字段:{{#response.data[0].temperature#}}可取首条预报温度;{{#response.message#}}可取错误提示文本。
切勿直接使用{{response}}全量输出——原始响应常含敏感字段(如token、内部ID),暴露给用户存在安全风险。
若API返回非JSON格式(如纯文本或XML),需先添加“文本处理”节点转换格式,再用正则提取,否则JSONPath会报错。


















