ThingsBoard3.9.1规则链-节点rest api call使用方法

        最近在整理课程,基于最新thingsboard版本3.9.1/4.0,欢迎大家点赞,收藏、关注我,提问,在评论区留言,我争取把最新、最准、最好的课程,呈现在各位亦师亦友的csdn广大读者面前。

本节点:发送rest call 请求。

应用场景

提交数据,获取数据,上报告警。

基本概念

REST API是“Representational State Transfer Application Programming Interface”(表述性状态转移应用程序接口)的简称,是一种基于HTTP协议的网络接口设计风格,常用于前后端或系统间的数据交互。

REST 的核心概念如下:

资源(Resource):一切对外提供的内容都是资源,比如用户、图片、文章等,每个资源通过一个URL唯一标识。

例:https://qeeking.com/api/users/abc3356 表示用户ID为abc3356的用户资源。

HTTP 方法:对应对资源的操作:

GET:获取资源

POST:创建资源

PUT:更新资源(通常是整体更新)

DELETE:删除资源

无状态性(Stateless):每次请求都是独立的,不依赖之前的请求,服务器不会记住客户端的状态。

使用标准的数据格式:通常是 JSON,也可以是 XML。

   

        说明:

        [x] 节点名称*:本节点的名称;

        [x] Endpoint URL pattern*:配置外部REST API接口路径;

        [x] Request method*:请求方式;

        [x] Enable proxy:配置代理,默认不勾选

        [x] Use simple client HTTP factory:使用简化 http 客户端工厂,默认不勾选;

        [x] Parse to plain text:解析为明文字符,默认不勾选;

        [x] Without request body:不带请求消息体,默认不勾选;

        [x] Read timeout in millis:设置读取超时时间,默认为0表示无限超时时间;

        [x] Max number of parallel requests:最大并行请求数,默认为0表示无限制;

        [x] Max response size (in KB):最大回应消息大小KB;

        [x] Header:消息头,非必填项;

        [x] Credentials:认证方式,非必填项;

        认证模式有三种:匿名/基础/PEM。

               Anonymous - no authentication

              Basic - username\password pair is used for authenticating

              PEM - PEM certificates are used for Authentication

              如果选择PEM,则需要提供以下材料:

                        CA certificate file CA证书文件

                        Certificate file 证书文件

                        Private key file 私钥文件

                        Private key password 私钥密码

  应用场景测试

  (1)准备工作

        在192.168.1.115服务器上,使用npm install -g json-server命令,安装json-server;

使用json-server,模拟rest api server;

        打开一个新的cmd命令窗口,进入zzbak目录下,

        命令:json-server  testcall.json

人工方式在浏览器访问,如下:

(2)新建规则链节点-命名为testrestapi

 规则链如下:蓝色箭头所指的节点3

使用Jmeter产生遥测消息,如下:

1:

{

    "Seqno": 81,

    "BusVoltage": 378,

    "humidity": 22,

    "temperature": 77

}

2:

{

    "deviceName": "Test Device A1",

    "deviceType": "default",

    "ts": "1746409283934"

}

3:

{

    "totalPages": 1,

    "totalElements": 9,

    "hasNext": false

} // 注意如上,传出消息体是rest api节点得到的回应消息内容

4:

{

    "Access-Control-Allow-Headers": "content-type",

    "Access-Control-Allow-Methods": "GET, HEAD, PUT, PATCH, POST, DELETE",

    "Access-Control-Allow-Origin": "*",

    "Connection": "keep-alive",

    "Content-Length": "63",

    "Content-Type": "application/json",

    "Date": "Mon, 05 May 2025 01:41:23 GMT",

    "Keep-Alive": "timeout=5",

    "X-Powered-By": "tinyhttp",

    "deviceName": "Test Device A1",

    "deviceType": "default",

    "status": "OK",

    "statusCode": "200",

    "statusReason": "OK",

    "ts": "1746409283934"

}  // 注意如上,蓝色部分几个字段,是本节点传出消息元数据中的新增项

日志节点的事件如下:

打印日志如下:

 (3)处理rest api call的回应消息

一般来说,rest api的resonse消息,包含header,body,statuscode。

从上面事件日志可以看到,蓝色字体部分,回应消息的header,status/statusCode/statusReason自动填充到消息元数据中。metadata。

从上面事件日志可以看到,紫色字体部分,回应消息的boday部分,放在消息中。msg。

处理rest api call的回应消息,有几种方法:

        3-1 从消息元数据metadata中获取status/statusCode/statusReason,分情况处理后续流程。

比如,使用变换script节点,判断if (medata.statusCode === 200),输出新msg或metadata。

比如,使用筛选器script节点,判断msg或metadata的某个key,输出True或False。

比如,使用筛选器switch节点,判断msg或metadata的某个key,输出one/two/three等。

        3-2 保存响应数据为attribute或telemetry

保存为attribute,使用动作save attributes节点。

保存为telemetry,使用动作save time series节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值