前言
在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)。默认情况下为truerequestTimeout
如果设置为正数毫秒,将覆盖全局设置的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-data
和msg.payload
传递给节点的必须是具有以下结构的对象:
{
"KEY": {
"value": FILE_CONTENTS,
"options": {
"filename": "FILENAME"
}
}
}
KEY,FILE_CONTENTS和FILENAME的值应设置为适当的值。