功能性API接口说明
当coolpy7启动时,在没有改变相关启动参数的前提下,coolpy7会启动本api服务在8081端口。默认的登陆账号为admin,密码为coolpy7。如需修改登陆可在启动参数使用 -syst=xxxx设置。已对接完成的前端项目已开源于:https://github.com/Coolpy7/admin
Path: /login/account
Method: POST
接口描述:
Headers
参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
Content-Type | application/json | 是 | | |
Body
名称 | 类型 | 是否必须 | 默认值 | 备注 |
userName | string | 必须 | admin | 用户名 |
password | string | 必须 | coolpy7 | 密码 |
名称 | 类型 | 是否必须 | 备注 |
status | string | 非必须 | 结果状态 |
token | string | 非必须 | token |
//登陆示例
curl --location --request POST 'http://localhost:8081/login/account' \
--header 'Content-Type: text/plain' \
--data-raw '{"userName": "admin", "password": "coolpy7"}'
鉴权说明:除登录接口外,其他接口均需把登录接口返回的TOKEN值 写到HTTP的header中,并使用Authorization为header键值,value值为 Bearer 加空格后带上token内容。
Path: /api/brokers
Method: GET
接口描述:
名称 | 类型 | 是否必须 | 备注 |
current | number | 非必须 | 当前页 |
data | object [] | 非必须 | 数据载体 |
├─ addr | string | 必须 | 节点群集通信IP |
├─ name | string | 必须 | 节点名称 |
├─ port | number | 必须 | 节点群集通信端口号 |
├─ version | string | 必须 | 节点版本号 |
├─ uptime | string | 必须 | 节点启动时间 |
├─ datetime | string | 必须 | 节点所在设备当前时间 |
├─ is_local | boolean | 非必须 | 是否当前节点 |
pageSize | number | 非必须 | 页大小 |
success | boolean | 非必须 | 请求结果 |
total | number | 非必须 | 合计记录数 |
//示例
curl --location --request GET 'http://localhost:8081/api/brokers?current=1&pageSize=100' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJDUDciLCJleHAiOjE2MjgzMjI3NjgsImp0aSI6ImFkbWluIiwiaWF0IjoxNjI4MzE1NTY4LCJpc3MiOiJjb29scHkubmV0IiwibmJmIjoxNjI4MzE1NTY4fQ.r5cS1OIz8iJqrswAlo5-FStWNm9OP2LJchgVnVIhh9w' \
--data-raw ''
Path: /api/runtime
Method: GET
接口描述:
名称 | 类型 | 是否必须 | 备注 |
current | number | 非必须 | 当前页 |
data | object [] | 非必须 | 数据 |
├─ clientsdata | number | 必须 | 度量值 |
├─ clientstype | string | 必须 | 度量类型 |
pageSize | number | 非必须 | 页大小 |
success | boolean | 非必须 | 操作结果 |
total | number | 非必须 | 总记录数 |
//示例
curl --location --request GET 'http://localhost:8081/api/runtime?current=1&pageSize=100' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJDUDciLCJleHAiOjE2MjgzMjI3NjgsImp0aSI6ImFkbWluIiwiaWF0IjoxNjI4MzE1NTY4LCJpc3MiOiJjb29scHkubmV0IiwibmJmIjoxNjI4MzE1NTY4fQ.r5cS1OIz8iJqrswAlo5-FStWNm9OP2LJchgVnVIhh9w' \
--data-raw ''
Path: /api/config
Method: GET
接口描述:
名称 | 类型 | 是否必须 | 备注 |
current | number | 非必须 | 当前页 |
data | object [] | 非必须 | 数据 |
├─ configdata | number,string | 必须 | 配置值 |
├─ configtype | string | 必须 | 配置类型 |
pageSize | number | 非必须 | 页大小 |
success | boolean | 非必须 | 操作结果 |
total | number | 非必须 | 总记录数 |
//示例
curl --location --request GET 'http://localhost:8081/api/config?current=1&pageSize=100' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJDUDciLCJleHAiOjE2MjgzMjI3NjgsImp0aSI6ImFkbWluIiwiaWF0IjoxNjI4MzE1NTY4LCJpc3MiOiJjb29scHkubmV0IiwibmJmIjoxNjI4MzE1NTY4fQ.r5cS1OIz8iJqrswAlo5-FStWNm9OP2LJchgVnVIhh9w' \
--data-raw ''
Path: /api/system
Method: GET
接口描述:
名称 | 类型 | 是否必须 | 备注 |
current | number | 非必须 | 当前页 |
data | object [] | 非必须 | 数据 |
├─ bytes_received | number | 非必须 | 输入流量 |
├─ bytes_sent | number | 非必须 | 输出流量 |
├─ connections_count | number | 非必须 | 当前连接数 |
├─ connections_max | number | 非必须 | 最大连接数 |
├─ messages_received | number | 非必须 | 消息接收数 |
├─ messages_retained | number | 非必须 | retained消息 |
├─ messages_sent | number | 非必须 | 消息发送数 |
├─ subscriptions_count | number | 非必须 | 订阅数 |
├─ subscriptions_max | number | 非必须 | 最大订阅数 |
pageSize | number | 非必须 | 页大小 |
success | boolean | 非必须 | 操作结果 |
total | number | 非必须 | 总记录数 |
//示例
curl --location --request GET 'http://localhost:8081/api/system?current=1&pageSize=100' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJDUDciLCJleHAiOjE2MjgzMjI3NjgsImp0aSI6ImFkbWluIiwiaWF0IjoxNjI4MzE1NTY4LCJpc3MiOiJjb29scHkubmV0IiwibmJmIjoxNjI4MzE1NTY4fQ.r5cS1OIz8iJqrswAlo5-FStWNm9OP2LJchgVnVIhh9w' \
--data-raw ''
Path: /api/clients
Method: GET
接口描述:
Query
参数名称 | 是否必须 | 示例 |
current | 是 | ?current=1&pageSize=10 |
pageSize | 是 | ?current=1&pageSize=10 |
Body
名称 | 类型 | 是否必须 | 备注 |
ClientId | string | 非必须 | 客户端ID |
Ip | string | 非必须 | 客户端IP |
Protocol | string | 非必须 | 协议类型 |
SessionAt | string | 非必须 | 会话时间 |
Status | string | 非必须 | 状态 |
名称 | 类型 | 是否必须 | 备注 |
current | number | 非必须 | 当前页 |
data | object [] | 非必须 | 数据 |
├─ client_id | string | 必须 | 客户端ID |
├─ ip | string | 必须 | 客户端IP |
├─ protocol | string | 必须 | 协议类型 |
├─ session_at | string | 必须 | 会话时间 |
├─ status | string | 必须 | 客户端状态 |
├─ subscribes | number | 必须 | 订阅数 |
├─ updated_at | string | 必须 | 更新时间 |
├─ user_name | string | 必须 | 用户名 |
pageSize | number | 非必须 | 页大小 |
success | boolean | 非必须 | 操作结果 |
total | number | 非必须 | 总记录数 |
curl --location --request GET 'http://localhost:8081/api/clients?current=1&pageSize=100' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJDUDciLCJleHAiOjE2MjgzMjI3NjgsImp0aSI6ImFkbWluIiwiaWF0IjoxNjI4MzE1NTY4LCJpc3MiOiJjb29scHkubmV0IiwibmJmIjoxNjI4MzE1NTY4fQ.r5cS1OIz8iJqrswAlo5-FStWNm9OP2LJchgVnVIhh9w' \
--data-raw ''
Path: /api/topics
Method: GET
接口描述:
Query
参数名称 | 是否必须 | 示例 |
current | 是 | ?current=1&pageSize=10 |
pageSize | 是 | ?current=1&pageSize=10 |
名称 | 类型 | 是否必须 | 备注 |
current | number | 非必须 | 当前页 |
data | object [] | 非必须 | 数据 |
├─ client_id | string | 必须 | 客户端ID |
├─ node_name | string | 必须 | 节点名称 |
├─ qos | number | 必须 | 消息质量 |
├─ topic | string | 必须 | 主题 |
├─ updated_at | string | 必须 | 更新时间 |
pageSize | number | 非必须 | 页大小 |
success | boolean | 非必须 | 操作结果 |
total | number | 非必须 | 总记录数 |
curl --location --request GET 'http://localhost:8081/api/topics?current=1&pageSize=100' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJDUDciLCJleHAiOjE2MjgzMjI3NjgsImp0aSI6ImFkbWluIiwiaWF0IjoxNjI4MzE1NTY4LCJpc3MiOiJjb29scHkubmV0IiwibmJmIjoxNjI4MzE1NTY4fQ.r5cS1OIz8iJqrswAlo5-FStWNm9OP2LJchgVnVIhh9w' \
--data-raw ''
Path: /api/rules
Method: POST
接口描述:
Headers
参数名称 | 参数值 | 是否必须 |
Content-Type | application/json | 是 |
Body
名称 | 类型 | 是否必须 | 备注 |
ruleName | string | 必须 | 规则名称 |
rule | string | 必须 | 规则脚本内容 |
名称 | 类型 | 是否必须 | 备注 |
success | boolean | 非必须 | 状态 |
id | string | 非必须 | 规则ID |
ruleDesc | string | 非必须 | 规则备注 |
ruleName | string | 非必须 | 规则名 |
salience | string | 非必须 | 规则优先级 |
curl --location --request POST 'http://localhost:8081/api/rules' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJDUDciLCJleHAiOjE2MjgzMjI3NjgsImp0aSI6ImFkbWluIiwiaWF0IjoxNjI4MzE1NTY4LCJpc3MiOiJjb29scHkubmV0IiwibmJmIjoxNjI4MzE1NTY4fQ.r5cS1OIz8iJqrswAlo5-FStWNm9OP2LJchgVnVIhh9w' \
--header 'Content-Type: text/plain' \
--data-raw '{"ruleName":"rule2","rule":"//规则名称为rule2,规则备注,执行优先级\nrule \"rule2\" \"rule-describtion\" salience 1\nbegin\n //过滤主题为aaa的消息才进行处理\n if Message.Topic == \"aaa\" {\n //反序列化消息中的载体\n payload = Core.FromJson(Message.Payload)\n //判断消息载体是否为空\n if isNil(payload) {\n println(\"parse error\")\n return\n }\n //实例化一个map用于转换消息体格式\n res = Core.MakeMap()\n //把原消息的msg内容付值到新消息体的m键中\n res[\"m\"] = payload[\"msg\"]\n //序列化新的消息体为json\n reMsg = Core.ToJson(res)\n //传送序列化是否失败\n if isNil(reMsg) {\n println(\"format error\")\n return\n }\n //打印序列化结果于服务端\n println(Core.String(reMsg))\n //实例化mqtt消息体\n newMsg = Core.MakeMessage()\n //设置新的接收主题\n newMsg.Topic = \"bbb/#\"\n //消息质量控制\n newMsg.QOS = 0\n newMsg.Retain = false\n //把新的载体付值到新消息载体中\n newMsg.Payload = reMsg\n //通过内核发布新消息\n err = Core.Publish(newMsg)\n if err != \"\" {\n println(err)\n }\n }\nend","method":"post"}'
Path: /api/rules
Method: PUT
接口描述:
Headers
参数名称 | 参数值 | 是否必须 |
Content-Type | application/json | 是 |
Body
名称 | 类型 | 是否必须 | 备注 |
ruleName | string | 必须 | 规则名 |
rule | string | 必须 | 规则脚本内容 |
名称 | 类型 | 是否必须 | 备注 |
success | boolean | 非必须 | 状态 |
id | string | 非必须 | 规则ID |
ruleDesc | string | 非必须 | 规则备注 |
ruleName | string | 非必须 | 规则名 |
salience | string | 非必须 | 规则优先级 |
curl --location --request PUT 'http://localhost:8081/api/rules' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJDUDciLCJleHAiOjE2MjgzMjI3NjgsImp0aSI6ImFkbWluIiwiaWF0IjoxNjI4MzE1NTY4LCJpc3MiOiJjb29scHkubmV0IiwibmJmIjoxNjI4MzE1NTY4fQ.r5cS1OIz8iJqrswAlo5-FStWNm9OP2LJchgVnVIhh9w' \
--header 'Content-Type: text/plain' \
--data-raw '{"ruleName":"rule2","rule":"//规则名称为rule2,规则备注,执行优先级\nrule \"rule2\" \"rule-describtion\" salience 1\nbegin\n //过滤主题为aaa的消息才进行处理\n if Message.Topic == \"aaa\" {\n //反序列化消息中的载体\n payload = Core.FromJson(Message.Payload)\n //判断消息载体是否为空\n if isNil(payload) {\n println(\"parse error\")\n return\n }\n //实例化一个map用于转换消息体格式\n res = Core.MakeMap()\n //把原消息的msg内容付值到新消息体的m键中\n res[\"m\"] = payload[\"msg\"]\n //序列化新的消息体为json\n reMsg = Core.ToJson(res)\n //传送序列化是否失败\n if isNil(reMsg) {\n println(\"format error\")\n return\n }\n //打印序列化结果于服务端\n println(Core.String(reMsg))\n //实例化mqtt消息体\n newMsg = Core.MakeMessage()\n //设置新的接收主题\n newMsg.Topic = \"bbb/#\"\n //消息质量控制\n newMsg.QOS = 0\n newMsg.Retain = false\n //把新的载体付值到新消息载体中\n newMsg.Payload = reMsg\n //通过内核发布新消息\n err = Core.Publish(newMsg)\n if err != \"\" {\n println(err)\n }\n }\nend","method":"post"}'
Path: /api/rules
Method: GET
接口描述:
Query
参数名称 | 是否必须 | 示例 |
current | 是 | ?current=1&pageSize=10 |
pageSize | 是 | ?current=1&pageSize=10 |
名称 | 类型 | 是否必须 | 备注 |
current | number | 非必须 | 当前页 |
data | object [] | 非必须 | 数据 |
├─ id | string | 必须 | 规则ID |
├─ ruleName | string | 必须 | 规则名称 |
pageSize | number | 非必须 | 页大小 |
success | boolean | 非必须 | 操作结果 |
total | number | 非必须 | 总记录数 |
curl --location --request GET 'http://localhost:8081/api/rules?current=1&pageSize=100' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJDUDciLCJleHAiOjE2MjgzMjI3NjgsImp0aSI6ImFkbWluIiwiaWF0IjoxNjI4MzE1NTY4LCJpc3MiOiJjb29scHkubmV0IiwibmJmIjoxNjI4MzE1NTY4fQ.r5cS1OIz8iJqrswAlo5-FStWNm9OP2LJchgVnVIhh9w'
Path: /api/rule/:ruleid
Method: GET
接口描述:
路径参数
参数名称 | 示例 | 备注 |
ruleid | rule2 | 规则名称 |
名称 | 类型 | 是否必须 | 备注 |
success | boolean | 非必须 | 操作结果 |
data | object | 非必须 | 数据 |
├─ rule | string | 非必须 | 规则脚本内容 |
├─ ruleName | string | 非必须 | 规则名称 |
curl --location --request GET 'http://localhost:8081/api/rule/rule1' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJDUDciLCJleHAiOjE2MjgzMjI3NjgsImp0aSI6ImFkbWluIiwiaWF0IjoxNjI4MzE1NTY4LCJpc3MiOiJjb29scHkubmV0IiwibmJmIjoxNjI4MzE1NTY4fQ.r5cS1OIz8iJqrswAlo5-FStWNm9OP2LJchgVnVIhh9w'
Path: /api/rules
Method: DELETE
接口描述:
Headers
参数名称 | 参数值 | 是否必须 |
Content-Type | application/json | 是 |
Body
参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
ids | string[] | 否 | {"ids":["rule2"]} | 删除单个规则需要传规则id,不传则删除所有规则 |
名称 | 类型 | 是否必 须 | 备注 |