• V
 

在 URL 中设置查询字符串参数

问题

您希望为 HTTP 请求的 URL 设置查询字符串参数。

解决方案

使用 HTTP 请求 节点对 mustache 的支持,直接在 URL 中替换查询参数字符串。

示例

[{"id":"e95c6faa.ab2e1","type":"http request","z":"c9a81b70.8abed8","name":"","method":"GET","ret":"txt","url":"https://query.yahooapis.com/v1/public/yql?q={{{query}}}&format=json","tls":"","x":470,"y":420,"wires":[["7cf30700.5bc978"]]},{"id":"7cf30700.5bc978","type":"debug","z":"c9a81b70.8abed8","name":"","active":true,"console":"false","complete":"payload","x":630,"y":420,"wires":[]},{"id":"637d3c55.eb3084","type":"inject","z":"c9a81b70.8abed8","name":"query parameter","topic":"","payload":"select astronomy.sunset from weather.forecast where woeid in (select woeid from geo.places(1) where text=\"maui, hi\")","payloadType":"str","repeat":"","crontab":"","once":false,"x":120,"y":420,"wires":[["b001d489.d8f818"]]},{"id":"b001d489.d8f818","type":"change","z":"c9a81b70.8abed8","name":"","rules":[{"t":"set","p":"query","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":300,"y":420,"wires":[["e95c6faa.ab2e1"]]}]

Inject 节点生成要发送到 URL 的查询字符串。Change 节点将其更改为 msg.query,该字符串在 HTTP 请求 节点的 URL 属性中配置为 mustache 模板,如下图所示。

https://query.yahooapis.com/v1/public/yql?q={{{query}}}&format=json

返回的 JSON 内容是夏威夷的日落

"{"query":{"count":1,"created":"2017-01-22T01:31:07Z","lang":"en-US","results":{"channel":{"astronomy":{"sunset":"6:9 pm"}}}}}"

讨论

默认情况下,mustache 会转义其替换值中的任何 HTML 实体。为确保您的 URL 中不使用 HTML 转义,请使用 {{{triple}}} 大括号。