Node-RED:Рецепты/Как задать URL запроса при помощи шаблона: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 17: | Строка 17: | ||
[[File:nodered_recipe_set-request-url-template.png|center]] | [[File:nodered_recipe_set-request-url-template.png|center]] | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
[{"id":"41747a17.54ffd4","type":"http request","z":"c9a81b70.8abed8","name":"","method":"GET","ret":"txt","url":"https://jsonplaceholder.typicode.com/posts/{{post}}","tls":"","x":550,"y":480,"wires":[["d682318c.36823"]]},{"id":"d682318c.36823","type":"debug","z":"c9a81b70.8abed8","name":"","active":true,"console":"false","complete":"payload","x":710,"y":480,"wires":[]},{"id":"90bfea22.dd2b98","type":"inject","z":"c9a81b70.8abed8","name":"post id","topic":"","payload":"2","payloadType":"str","repeat":"","crontab":"","once":false,"x":250,"y":480,"wires":[["e67a0cc.596d4f"]]},{"id":"e67a0cc.596d4f","type":"change","z":"c9a81b70.8abed8","name":"","rules":[{"t":"set","p":"post","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":480,"wires":[["41747a17.54ffd4"]]}] | [{"id":"41747a17.54ffd4","type":"http request","z":"c9a81b70.8abed8","name":"","method":"GET","ret":"txt","url":"https://jsonplaceholder.typicode.com/posts/{{post}}","tls":"","x":550,"y":480,"wires":[["d682318c.36823"]]},{"id":"d682318c.36823","type":"debug","z":"c9a81b70.8abed8","name":"","active":true,"console":"false","complete":"payload","x":710,"y":480,"wires":[]},{"id":"90bfea22.dd2b98","type":"inject","z":"c9a81b70.8abed8","name":"post id","topic":"","payload":"2","payloadType":"str","repeat":"","crontab":"","once":false,"x":250,"y":480,"wires":[["e67a0cc.596d4f"]]},{"id":"e67a0cc.596d4f","type":"change","z":"c9a81b70.8abed8","name":"","rules":[{"t":"set","p":"post","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":480,"wires":[["41747a17.54ffd4"]]}] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 23: | Строка 23: | ||
В примере выше нода '''«Inject»''' отправляет '''ID''' поста, который нужно запросить у [[API]]. Нода '''«Change»''' сохраняет его в '''«msg.post»'''. Нода '''«HTTP request»''' генерирует ссылку, заменяя последний элемент [[URL]] значением из свойства '''«msg.post»'''. | В примере выше нода '''«Inject»''' отправляет '''ID''' поста, который нужно запросить у [[API]]. Нода '''«Change»''' сохраняет его в '''«msg.post»'''. Нода '''«HTTP request»''' генерирует ссылку, заменяя последний элемент [[URL]] значением из свойства '''«msg.post»'''. | ||
<syntaxhighlight lang="html5 | <syntaxhighlight lang="html5"> | ||
https://jsonplaceholder.typicode.com/posts/{{post}} | https://jsonplaceholder.typicode.com/posts/{{post}} | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 29: | Строка 29: | ||
В результате на вкладке '''«Debug»''' в боковой панели должны появиться [[JSON-данные]] от [[API]]: | В результате на вкладке '''«Debug»''' в боковой панели должны появиться [[JSON-данные]] от [[API]]: | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
{ | { | ||
"userId": 1, | "userId": 1, |
Текущая версия от 18:24, 14 мая 2023
Как задать URL запроса при помощи шаблона[1]
Проблема
Вам нужно динамически задать URL для HTTP-запроса. Некоторые части этого URL будут меняться от запроса к запросу.
Решение
Вам нужно будет настроить ноду «HTTP request», чтобы она динамически генерировала URL при помощи URL-шаблона mustache.
Пример
[{"id":"41747a17.54ffd4","type":"http request","z":"c9a81b70.8abed8","name":"","method":"GET","ret":"txt","url":"https://jsonplaceholder.typicode.com/posts/{{post}}","tls":"","x":550,"y":480,"wires":[["d682318c.36823"]]},{"id":"d682318c.36823","type":"debug","z":"c9a81b70.8abed8","name":"","active":true,"console":"false","complete":"payload","x":710,"y":480,"wires":[]},{"id":"90bfea22.dd2b98","type":"inject","z":"c9a81b70.8abed8","name":"post id","topic":"","payload":"2","payloadType":"str","repeat":"","crontab":"","once":false,"x":250,"y":480,"wires":[["e67a0cc.596d4f"]]},{"id":"e67a0cc.596d4f","type":"change","z":"c9a81b70.8abed8","name":"","rules":[{"t":"set","p":"post","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":480,"wires":[["41747a17.54ffd4"]]}]
В примере выше нода «Inject» отправляет ID поста, который нужно запросить у API. Нода «Change» сохраняет его в «msg.post». Нода «HTTP request» генерирует ссылку, заменяя последний элемент URL значением из свойства «msg.post».
https://jsonplaceholder.typicode.com/posts/{{post}}
В результате на вкладке «Debug» в боковой панели должны появиться JSON-данные от API:
{
"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"
}
Разбор
По умолчанию mustache теряет все символы-мнемоники HTML в значениях, которые он вставляет в шаблон. Чтобы с вашим URL такого не происходило, воспользуйтесь {{{тройными}}} кавычками.
См.также
Внешние ссылки