Node-RED:Библиотеки/node-red/HTTP request
Нода «HTTP request»
Отправляет HTTP-запросы и возвращает ответы.
Свойства присылаемого сообщения
- Свойство «url» (строка) – URL запроса (опциональное свойство)
- Свойство «method» (строка) – HTTP-метод запроса (опциональное свойство). Возможные значения: «GET», «PUT», «POST», «PATCH» или «DELETE»
- Свойство «headers» (объект) – HTTP-заголовки запроса
- Свойство «cookies» (объект) – можно использовать для отправки кукис вместе с запросом
- Свойство «payload» – тело запроса
- Свойство «rejectUnauthorized» – если задать здесь «false», это позволит делать запросы на https-сайты, использующие самозаверенные сертификаты
- Свойство «followRedirects» – если задать здесь «false», это не позволит делать перенаправления (HTTP 301). По умолчанию стоит «true»
- Свойство «requestTimeout» – если задать здесь положительное число, оно перезапишет глобальный параметр «httpRequestTimeout»
Свойства отправляемого сообщения
- Свойство «payload» (строка/объект/буфер) – тело ответа. В ноде можно задать, чтобы тело было возвращено либо в виде строки, либо чтобы она попыталась пропарсить его как JSON-строку, либо чтобы она оставила его буфером с двоичными данными
- Свойство «statusCode» (число) – код состояния ответа или код ошибки, если запрос не может быть выполнен
- Свойство «headers» (объект) – объект, содержащий заголовки ответа
- Свойство «responseUrl» (строка) – в этом свойстве задается URL последнего перенаправления на тот случай, если во время обработки запроса произойдет какое-либо перенаправление. В противном случае – URL исходного запроса
- Свойство «responseCookies» (объект) – если в ответе есть кукис, в этом свойстве будет храниться объект с парами «ключ/значение» для каждой кукис
- Свойство «redirectList» (массив) – если при запросе произошло одно или более перенаправлений, в это свойство будет записана информация о них; «location» – это адрес следующего перенаправления, «cookies» – это кукис, взятые с адреса перенаправления
Подробное описание
Задавая в ноде свойство «url», можно использовать теги в стиле mustache. Это позволяет конструировать URL при помощи значений входящего сообщения. К примеру, если в «url» задано «example.com/{{{topic}}}», вместо «topic» будет автоматически вставлено значение из свойства «msg.topic». Использование тройных кавычек – {{{...}}} – необходимо, чтобы mustache не игнорировал символы-мнемоники HTML вроде «/», «&» и т.д.
Примечание: При запуске под прокси нужно задать стандартную переменную окружения «http_proxy=...» и перезапустить Node-RED или задать прокси в меню редактирования ноды (поставьте галочку рядом с пунктом «Use proxy», после чего появятся настройки прокси – введите их). Если вы решили воспользоваться вторым методом, то настройки внутри ноды будут иметь приоритет над переменной окружения.
Использование нескольких нод «HTTP request»
Если вы используете более одной ноды «HTTP request» в одном потоке, обратите особое внимание на использование свойства «msg.headers». Первая нода сохранит в это свойство заголовки ответа.
Следующая нода воспользуется этими заголовками для своего запроса – как правило, так лучше не делать. Если свойство «msg.headers» придет во вторую ноду без изменений, она его проигнорирует. Если вы хотите задать собственные заголовки, значение в «msg.headers» сперва нужно удалить или сбросить с помощью пустого объекта – {}.
Управление кукис
Свойство «cookies», передаваемое ноде, должно содержать объект с парами «ключ/значение», где второй элемент – это значение кукис. Значением может быть либо строка, либо объект с одним свойством «value».
Все кукис, возвращаемые запросом, находятся в свойстве «responseCookies».
Управление типом контента
Если значением в «msg.payload» является объект, нода автоматически задаст тип контента в запросе на «application/json» и будет парсить тело, считая, что это JSON-строка.
Если вам нужно пропарсить запрос как данные формы, то типом контента в «msg.headers["content-type"]» должно быть «application/x-www-form-urlencoded».
Загрузка файла
Чтобы выполнить загрузку файла, типом контента в «msg.headers["content-type"]» должен быть «multipart/form-data», а в свойстве «msg.payload», передаваемом ноде, должен быть объект со следующей структурой:
{
"КЛЮЧ": {
"value": СОДЕРЖИМОЕ_ФАЙЛА,
"options": {
"filename": "НАЗВАНИЕ_ФАЙЛА"
}
}
}
Соответственно, вместо «КЛЮЧ», «СОДЕРЖИМОЕ_ФАЙЛА» и «НАЗВАНИЕ_ФАЙЛА» должны стоять реальные значения.
См.также
Внешние ссылки