关于 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"
        }
    ]
}