emqx通过http API创建规则
如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033
环境: emqx: v4.3.8
相关阅读: emq获取所有发布内容
emqx HTTP API基础
HTTP API
EMQ X 提供了 HTTP API 以实现与外部系统的集成,例如查询客户端信息、发布消息和创建规则等。
EMQ X 的 HTTP API 服务默认监听 8081 端口,可通过 etc/plugins/emqx_management.conf 配置文件修改监听端口,或启用 HTTPS 监听。EMQ X 4.0.0以后的所有 API 调用均以 api/v4 开头。
接口安全
EMQ X 的 HTTP API 使用Basic 认证 方式,id 和 password 须分别填写 AppID 和 AppSecret。 默认的 AppID 和 AppSecret 是:admin/public 。你可以在 Dashboard 的左侧菜单栏里,选择 “管理” -> “应用” 来修改和添加 AppID/AppSecret。
响应码
HTTP 状态码 (status codes)
EMQ X 接口在调用成功时总是返回 200 OK,响应内容则以 JSON 格式返回。
可能的状态码如下:
Status Code | Description |
---|
200 | 成功,返回的 JSON 数据将提供更多信息 | 400 | 客户端请求无效,例如请求体或参数错误 | 401 | 客户端未通过服务端认证,使用无效的身份验证凭据可能会发生 | 404 | 找不到请求的路径或者请求的对象不存在 | 500 | 服务端处理请求时发生内部错误 |
返回码 (result codes)
EMQ X 接口的响应消息体为 JSON 格式,其中总是包含返回码 code 。
可能的返回码如下:
Return Code | Description |
---|
0 | 成功 | 101 | RPC 错误 | 102 | 未知错误 | 103 | 用户名或密码错误 | 104 | 空用户名或密码 | 105 | 用户不存在 | 106 | 管理员账户不可删除 | 107 | 关键请求参数缺失 | 108 | 请求参数错误 | 109 | 请求参数不是合法 JSON 格式 | 110 | 插件已开启 | 111 | 插件已关闭 | 112 | 客户端不在线 | 113 | 用户已存在 | 114 | 旧密码错误 | 115 | 不合法的主题 |
获取Broker基本信息
GET /api/v4/brokers/{node}
返回集群下所有节点的基本信息。
Path Parameters:
Name | Type | Required | Description |
---|
node | String | False | 节点名字,如 "emqx@127.0.0.1。 不指定时返回所有节点的信息 |
代码
const request = require('request');
const authStr = "admin:public";
let options = {
'method': 'GET',
'url': 'http://localhost:8081/api/v4/brokers/',
'headers': {
'Authorization': 'Basic ' + Buffer.from(authStr, 'ascii').toString('base64')
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
返回
{
"data": [
{
"version": "4.3.8",
"uptime": "19 hours, 34 minutes, 51 seconds",
"sysdescr": "EMQ X",
"otp_release": "23.0/11.0",
"node_status": "Running",
"node": "emqx@127.0.0.1",
"datetime": "2021-10-19 10:29:03"
}
],
"code": 0
}
设置规则引擎
POST /api/v4/rules
创建规则,返回规则 ID。
Parameters (json):
Name | Type | Required | Description |
---|
rawsql | String | True | 规则的 SQL 语句 | actions | Array | True | 动作列表 | - actions[0].name | String | True | 动作名称 | - actions[0].params | Object | True | 动作参数。参数以 key-value 形式表示。 详情可参看添加规则的示例 | description | String | False | 可选,规则描述 |
代码
const request = require('request');
const authStr = "admin:public";
let options = {
'method': 'POST',
'url': 'http://localhost:8081/api/v4/rules/',
'headers': {
'Authorization': 'Basic ' + Buffer.from(authStr, 'ascii').toString('base64'),
'Content-Type': 'application/json'
},
body: JSON.stringify({
"rawsql": "SELECT * FROM \"#\"",
"actions": [{
"params": {
"target_topic": "abc",
"target_qos": 0,
"payload_tmpl": "event: ${event}\ntopic: ${topic}\npayload: ${payload}"
},
"name": "republish"
}],
"description": "all publish message"
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
获取规则引擎信息
GET /api/v4/rules/{rule_id}
获取某个规则的详情,包括规则的 SQL、Topics 列表、动作列表等。还会返回当前规则和动作的统计指标的值。
Path Parameters:
Name | Type | Required | Description |
---|
rule_id | String | False | 可选,Rule ID。如不指定 rule_id 则 以数组形式返回所有已创建的规则 |
代码
const request = require('request');
const authStr = "admin:public";
let options = {
'method': 'GET',
'url': 'http://localhost:8081/api/v4/rules/',
'headers': {
'Authorization': 'Basic ' + Buffer.from(authStr, 'ascii').toString('base64')
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
License
License under CC BY-NC-ND 4.0: 署名-非商业使用-禁止演绎
Reference:
- https://docs.emqx.cn/enterprise/v4.3/advanced/http-api.html
|