目录

返回首页

API 访问接口

适用于 2021/04/26 以后的版本

创建 API 账号

进入“系统”-》“登录管理”-〉“登录账号”,创建账号等级为“API 访问的账号”

比如账号名为 apitest,密码为 123456

对应关系如下:AppKey 不在网络中传递,仅作计算签名用!

AppID = apitest                             账号
AppKey = 14e1b600b1fd579f47433b88e8d85291   明文密码2次MD5后的值

方法及参数

协议HTTP 或 HTTPS
请求方法GET
编码类型UTF-8
数据格式JSON
请求URL格式/api/<api_name>?参数1=值1&参数2=值2&…

参数说明:

字段名字段含义说明
AppIDAPI 账号名必须
Time时间戳(秒)必须
Signature签名必须
token随机字符串,长度6-8,字母数字组成必须

客户端需要保证生成的时间与服务端的时间相差不超过15分钟,否则服务端将拒绝此次请求。

签名认证

为保证API的安全调用,系统会对每个API请求通过签名(Signature)进行身份验证。

Signature = md5(KV + '&' + AppKey)
                
KV = k1=v1&k2=v2&...&kn=vn


KV:对于除Signature外的每一个参数,生成一个子串${key}=${value},并按参数名从小到大排序,最后用&符号连接。

注意:如果参数值${value}中包含除【大小写字母/数字/减号/下划线/圆点/波浪号】外的字符,需要使用URL Encode对其进行编码。

URL Encode编码说明:

使用UTF-8字符集按照RFC3986规则编码参数值,编码规则如下:

字符 A~Z、a~z、0~9 以及字符 - _ . ~ 不编码
其它字符编码成%XY的格式,其中XY是字符对应ASCII码的16进制表示。例如英文的双引号"对应的编码为%22。
扩展的UTF-8字符,编码成%XY%ZA…的格式。
英文空格要编码成%20,而不是加号+

原始字符串:测试Hello World123-_.~!
编码后:%E6%B5%8B%E8%AF%95Hello%20World123-_.~%21

举例说明:

准备请求的API:/api/config,参数:

k1=v1.0
k2=测试
i=flowlimit_rules

当前时间戳:1621500119

AppID: apitest
AppKey:14e1b600b1fd579f47433b88e8d85291

待签名字符串:
AppID=apitest&Time=1621500119&i=flowlimit_rules&k1=v1.0&k2=%E6%B5%8B%E8%AF%95&token=123456&14e1b600b1fd579f47433b88e8d85291

Signature 签名计算后为 a149fe5c410384229ce507ea7c77f815

最终请求URL:
https://192.168.1.254/api/config?AppID=apitest&Time=1621500119&i=flowlimit_rules&k1=v1.0&k2=%E6%B5%8B%E8%AF%95&token=123456&Signature=a149fe5c410384229ce507ea7c77f815

服务器响应

响应数据格式:

{
    code:      代码
    result:    详细信息
}

返回code代码说明:

代码含义
1成功
0失败/参数错误
-5010签名校验错误
-5002API 账号不存在
-5003操作无权限
-5004API 请求时间过期

API 详细列表