关于 REST API
为了支持各类不同平台的开发需要,YedMQ 提供了一组基于 RESTful 标准风格设计的HTTP API。
基本路径
YedMQ 在 REST API 上做了相关版本区分,现阶段所有的API均已 /api/v1 开头。
HTTP 请求头
绝大多数API要求请求头中 Accept 值设置为 application/json, 响应内容以JSON格式返回。
认证
现阶段 YedMQ 主要使用 Http Basic Authentication。
使用 Http Basic Authentication 认证
在这种方法中,您通过使用配置在 YedMQ 配置文件中的用户名以及密码来对API请求进行身份验证。
新增用户名以及密码
您可以在配置文件中增加密钥,例如:
[listener.api.auth]
users = [
{ username = "admin", password = "password" } # 必须在一行内
]
您可以增加多个用户名密钥:
- username: 用户名
- password: 密码
注意: 因为TOML格式的限制,一个用户配置需要在一行内。
✅正确的配置:
[listener.api.auth]
users = [
{ username = "admin", password = "password" }
]
❌错误的配置:
[listener.api.auth]
users = [
{
username = "admin", password = "password"
}
]
每次 YedMQ 启动时,会读取配置文件中的密钥,并在API请求时候进行相关检查。
请求示例如下:
curl -X GET http://localhost:3456/api/v1/plugins \
-u admin:password \
-H "Content-Type: application/json"
分页
在一些可能返回数据量比较大的API中,提供了分页功能。
offset limit 分页
支持分页的API中,您可以通过offset 和 limit 参数来控制分页,如果不指定相关参数,系统默认offset 为 0, limit 为 10。
例如:
GET /api/v1/plugins?offset=0&limit=10
响应结果中 meta 字段将包含分页信息,例如:
{
"meta": {
"offset": 0,
"limit": 10,
"total": 1
},
"data": [
{
"name": "YedMQ_Acl_File_Plugin",
"version": "0.0.1",
"description": "This plugin provides file-based ACL (Access Control List) management.",
"entry": "./libyedmq_plugins_acl_file.so",
"priority": 1000,
"author": "yedmq"
}
]
}