Как Node-red http-ответ перенаправляет на URL с msg.payload в качестве строки запроса - PullRequest
1 голос
/ 12 марта 2020

Я новичок в Node-red и пытаюсь использовать узел ответа http для перенаправления страницы со строками запроса.

Я прочитал этот вопрос и успешно использовал местоположение заголовка через изменение. узел (я также пытался напрямую установить атрибут в узле ответа HTTP), чтобы перенаправить на URL. Моя цель - перенаправить на сайт с msg.payload в виде строки запроса. Моя msg.payload содержит просто JSON объект типа

{"id":"1", "condition":2, "nset":3}

. Я попытался установить местоположение как http://[redirect_website]/getinfo?{{payload}}, но меня перенаправили на http://[redirect_website]/getinfo?{{payload}} вместо http://[redirect_website]/getinfo?id=1&condition=2&nset=3. Может ли кто-нибудь помочь мне с этим?

1 Ответ

1 голос
/ 12 марта 2020

Возможно, вам придется создать строку запроса самостоятельно.

Поэтому, если использовать узел функции для установки заголовка location, это будет выглядеть примерно так:

msg.statusCode = 303;
msg.headers = {
    Location: "https://example.com/getinfo?id=" +
    msg.payload.id + "&condition=" +
    msg.payload.condition + "&nset=" +
    msg.payload.nset;
}
delete msg.payload;
return msg;

Это код безопасен только в том случае, если все значения являются числами, если некоторые из значений являются строками, вам необходимо убедиться, что вы их URLE закодировали перед их добавлением.

Если все усложняется, вам, вероятно, следует добавить querystring module ( do c) в глобальный контекст (как добавить модули в глобальный контекст do c) и использовать его в узле функции для генерации строки запроса в одном go от объекта msg.payload.

...