跳到主要内容

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