前言

node-red中,如果你想要请求外部资源,比如获取当地天气,这个时候就可以使用http request节点,这个节点可以让你的node-red应用集成各种接口,数据。不受跨域的限制,可以访问大部分的http接口。支持的请求方法也比较全,GET,PUT,POST,PATCH或DELETE都是可以的。并且支持自定义头部,cookie,请求地址模板化,上传文件,请求超时。等各种强大的功能。本篇文件就来详细介绍一下他的各种用法,帮助大家快速地掌握起来,提升工作效率。

节点配置概述

该节点 有输入,有输出
输入的配置项有这些

url 如果未在节点中配置,则此可选属性设置请求的url。
method 如果未在节点中配置,则此可选属性设置请求的HTTP方法。必须是GET,PUT,POST,PATCH或DELETE之一。
headers 设置请求的HTTP头。
cookies 如果设置,则可用于发送带有请求的cookie。
payload 发送为请求的正文。
rejectUnauthorized 如果设置为false,则允许对使用自签名证书的https站点进行请求。
followRedirects 如果设置为false,则阻止遵循重定向(HTTP 301)。默认情况下为true
requestTimeout 如果设置为正数毫秒,将覆盖全局设置的httpRequestTimeout参数。

输出的参数

payload 响应的正文。可以将节点配置为以字符串形式返回主体,尝试将其解析为JSON字符串或将其保留为二进制buffer。
statusCode 响应的状态码,如果请求无法完成,则返回错误码。
headers 包含响应头的对象。
responseUrl 如果在处理请求时发生任何重定向,则此属性为最终重定向的URL。否则则为原始请求的URL。
responseCookies 如果响应包含cookie,则此属性是每个cookie的‘名称/值’键值对的对象。
redirectList 如果请求被重定向了一次或多次,则累积的信息将被添加到此属性。“location”是下一个重定向目标。cookie是从重定向源返回的cookie。

以上是翻译的官方英文文档。下面我们看一下具体的特殊用法。

使用代码来配置http request节点

该节点的输入参数,可以在配置面板里,配置,

但同时也可以在流中设置。
比如你要用GET方法请求https://fizzz.blog.csdn.net/地址。

除了在面板里配置外,你还可以这样在http request接口前使用function节点这样请求参数

msg.method = 'GET'
msg.url = 'https://fizzz.blog.csdn.net/'

除此之外,你还可以设置多个自定义的Headers
如例

msg.method = 'GET'
msg.url = 'https://fizzz.blog.csdn.net/?name=fizz&age=18'
msg.headers = {}
msg.headers['X-Auth-User'] = 'fizz'
msg.headers['X-Auth-Key'] = 'fizz-key'

在配置http request 节点的配置参数中,你可以使用模板来引用msg中的变量
如下,将url配置成这样
https://{{domin}}.blog.csdn.net/

变量domin在上游注入到msg中msg.domin

当你使用的是POST请求时,参数应该这样设置

msg.method = 'POST'
msg.url = 'https://fizzz.blog.csdn.net/?name=fizz&age=18'
msg.payload = {}
msg.payload.name = 'fizz'
msg.payload.key = 'fizz-key'

表单数据,文件上传

如果请数据为表单数据,应将msg.headers[“content-type”]设置为application/x-www-form-urlencoded

对于上传文件的场景,需要特殊设置一下http request节点

要执行文件上传,应将msg.headers[“content-type”]设置为multipart/form-datamsg.payload传递给节点的必须是具有以下结构的对象:

{
    "KEY": {
        "value": FILE_CONTENTS,
        "options": {
            "filename": "FILENAME"
        }
    }
}

KEY,FILE_CONTENTS和FILENAME的值应设置为适当的值。

相关新闻

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

邮箱

cloud@modbus.cn

QQ
QQ
微信
微信
分享本页
返回顶部