Node-RED: связать HTTP-запрос и ответ - PullRequest
0 голосов
/ 05 августа 2020

Я использую (пытаюсь использовать) стандартный узел http-запроса для запроса веб-сайта. К сожалению, ответ сайта не включает исходную информацию о запросе. Поскольку может выполняться несколько запросов, как я могу правильно связать запрос и ответ?

Может быть, я просто неправильно его использую или не понимаю? В классической среде программирования для этого будут использоваться дескрипторы.

2-й, запрос получен из другой задачи обработки, он используется для дополнения существующей информации. Я предполагаю, что мне нужно использовать хранилище контекста для временного хранения информации, пока запрос не будет завершен ответом?

(Фон: я запрашиваю список географических названий через регулярный интервал через HTTP - это просто. Чтобы показать их на карте, мне нужно запросить службу обратного геокодирования для каждого места, чтобы получить координаты. Также желательно кэширование мест, которые уже были разрешены; использование (постоянного) хранилища контекста обеспечит это.)

1 Ответ

1 голос
/ 05 августа 2020

Узел http-request выведет тот же msg, который был ему передан.

например, если вы передадите объект msg, который выглядит так:

{
  topic: "foo",
  payload:{ 
    name: "Ben"
  },
  counter: 99
}

А узел http-запроса настроен на передачу msg.payload в качестве аргументов URL-адреса запроса (при условии, что http-сервер возвращает «Hello [name]»), выходной объект msg будет выглядеть так:

{
  topic: "foo",
  payload:"Hello Ben",
  counter: 99
}

Как видите, поля topic и counter остались нетронутыми. Вы можете использовать этот подход для прикрепления любых метаданных, которые вы хотите, к msg по мере их прохождения через поток. Если у вас есть информация о состоянии, которая не имеет прямого отношения к предоставлению msg, тогда контекст - это подходящее место для ее хранения.

Все хорошо работающие узлы всегда должны выводить обновленную версию входных данных msg .

...