Node-Red,LoraWan Actility平台

时间:2018-03-05 10:15:17

标签: javascript json http request node-red

我试图学习如何在节点红色中为Actility平台添加http获取请求。现在我只收到错误401,不包括授权承载。

安装完成如下:

enter image description here

我从平台获得两个代码

curl -X GET --header 'Accept: application/json' --header 'Authorization: Bearer xxx' 'https://dx-api.thingpark.com/core/latest/api/devices?deviceEUI=xx&healthState=ACTIVE&statistics=true&extendedInfo=true'

首先是令牌持有者。

第二个是请求网址。

https://dx-api.thingpark.com/core/latest/api/devices?deviceEUI=xxx&healthState=ACTIVE&statistics=true&extendedInfo=true

如何创建能够正确生成答案的流程?

谢谢。

function setup

1 个答案:

答案 0 :(得分:1)

function节点内的Javascript是沙箱(在虚拟机中运行),因此您无法使用“require”等功能。但是,这不是问题 - 您可以将任何标头信息直接添加到msg.headers节点中function节点或甚至change节点中。{/ p>

您没有向我们显示您正在注入的数据,但根据http request节点信息,您可以将所有这些(可选)字段作为输入传递,这些字段可以成为对Actility系统的请求的一部分:

msg.url (string)
    If not configured in the node, this optional property sets the url
    of the request.

msg.method (string)
    If not configured in the node, this optional property sets the HTTP
    method of the request. Must be one of GET, PUT, POST, PATCH or DELETE.

msg.headers (object)
    Sets the HTTP headers of the request.

msg.cookies (object)
    If set, can be used to send cookies with the request.

msg.payload
    Sent as the body of the request.

假设您要将要POST的有效负载数据注入到Actility,您只需使用一个类似这样的简单函数节点添加所需的Auth头:

msg.method = "POST";
msg.headers = {
    "Authorization": "Bearer xxx",
    "Content-Type": "application/json"
};
return msg;

或者,假设您将持有者凭据字符串作为有效负载传递给函数,并且您有一个固定的有效负载要发送到Actility - 那么您的函数可能看起来像这样:

msg.method = "POST";
msg.headers = {
    "Authorization": "Bearer " + msg.payload,
    "Content-Type": "application/json"
};
msg.payload = { "foo": "bar" };
return msg;

注意:为了使用这些注入的字段,http request节点不能先前已将其值定义为节点配置的一部分。 < / p>