Coolpy7技术手册
  • COOLPY7千万级MQTT消息服务器
  • 开始使用
    • Coolpy7消息服务器简介
    • 一分钟运行 Coolpy7
    • 单机千万级连接测试
    • 消息并发压力测试
    • 部署架构
    • 程序安装
    • 分布式集群
    • Docker部署CP7(Win&Linux)
    • 消息通信功能测试
    • DbPoxy代理服务
    • 内核功能扩展
    • 规则引擎
    • 启动参数及内核特殊功能
    • 功能性API接口说明
    • 使用JWT身份验证
    • 消息组播
    • HTTP、CoAP推送消息
    • MQTT-SN代理服务
    • 客户端SDK示例库
    • 常见问题总汇
  • CGP通用IOT物联网控制协议
    • CGP协议
    • CGP协议安全模式
  • OAuth2用户中心应用
    • 用户中心
  • COOLPY7领域应用
    • CP7领域应用指南简略图
    • 使用paho-mqtt.js库实时聊天室
    • 微信小程序实时通信聊天室应用
    • 使用MQTT.js库连接CP7
    • Paho.mqtt.golang客户端连接示例
  • MQTT协议基础知识
    • MQTT协议
    • MQTT-SN 协议
    • MQTT应用指南
Powered by GitBook
On this page
  • 公共分类
  • 登录
  • Brokers节点
  • 度量指标:Runtime运行统计
  • 度量指标:Config配置
  • 度量指标:System
  • Clients客户端
  • Topics主题
  • 规则新增
  • 规则修改
  • 规则列表
  • 规则详情
  • 规则删除单个或删除所有

Was this helpful?

  1. 开始使用

功能性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内容。

Brokers节点

基本信息

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 ''

度量指标:Runtime运行统计

基本信息

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 ''

度量指标:Config配置

基本信息

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 ''

度量指标:System

基本信息

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 ''

Clients客户端

基本信息

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 ''

Topics主题

基本信息

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,不传则删除所有规则

返回数据

名称

类型

是否必须

备注

success

boolean

非必须

状态

curl --location --request DELETE 'http://localhost:8081/api/rules' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJDUDciLCJleHAiOjE2MjgzMjI3NjgsImp0aSI6ImFkbWluIiwiaWF0IjoxNjI4MzE1NTY4LCJpc3MiOiJjb29scHkubmV0IiwibmJmIjoxNjI4MzE1NTY4fQ.r5cS1OIz8iJqrswAlo5-FStWNm9OP2LJchgVnVIhh9w' \
--header 'Content-Type: text/plain' \
--data-raw '{"ids":["rule2"]}'
Previous启动参数及内核特殊功能Next使用JWT身份验证

Last updated 3 years ago

Was this helpful?