跳到主要内容

HTTP 请求-动态路径参数

动态设置 HTTP 请求 节点的路径参数

问题背景

动态设置 HTTP 请求 节点的 URL,其中只有部分 URL 在不同请求之间发生变化。

解决方案

配置 HTTP 请求 节点,使用 Mustache URL 模板动态生成 URL。

示例

在此流程中,注入 节点发送一个我们希望从 API 请求的帖子 ID。调整消息属性 节点将其更改为 msg.post。HTTP 请求 节点通过替换 URL 属性中配置的 msg.post 来生成 URL,如下所示: https://jsonplaceholder.typicode.com/posts/{{post}}

提示

默认情况下,Mustache 会转义它替换的值中的任何 HTML 实体。为了确保 URL 中不使用 HTML 转义,请使用 {{{三重大括号}}}

该流程包含四个节点:

  • 注入 节点: 配置为每当触发时,发送字符串 "2" 作为 msg.payload (代表帖子 ID)。
  • 调整消息属性 节点: 将 msg.payload 的值复制到 msg.post 属性中。
  • HTTP 请求 节点: 发送 GET 请求。其 URL 配置为 https://jsonplaceholder.typicode.com/posts/{{post}},它会用 msg.post 的值替换 {{post}}
  • 日志输出 节点: 显示 HTTP 请求 节点返回的 msg.payload 内容。

http-request-dynamic-path-params

示例JSON

[{"id":"41747a17.54ffd4","type":"http request","z":"65b5dbf44a0ca401","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://jsonplaceholder.typicode.com/posts/{{post}}","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":540,"y":3840,"wires":[["d682318c.36823"]]},{"id":"d682318c.36823","type":"debug","z":"65b5dbf44a0ca401","logName":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","logLevel":"info","dataType":"field","syntax":"mustache","template":"","x":700,"y":3840,"wires":[]},{"id":"90bfea22.dd2b98","type":"inject","z":"65b5dbf44a0ca401","name":"post id","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"","payload":"2","payloadType":"str","x":170,"y":3840,"wires":[["e67a0cc.596d4f"]]},{"id":"e67a0cc.596d4f","type":"change","z":"65b5dbf44a0ca401","name":"","rules":[{"t":"set","p":"post","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":3840,"wires":[["41747a17.54ffd4"]]}]

运行结果

当部署此流程并触发 注入 节点时,HTTP 请求 节点将向 https://jsonplaceholder.typicode.com/posts/2 发送请求。调试面板中来自此 API 请求的 JSON 输出将如下所示:

{
"userId": 1,
"id": 2,
"title": "qui est esse",
"body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
}

http-request-dunamic-path-params-result