适用于 2021/04/26 以后的版本
进入“系统”-》“登录管理”-〉“登录账号”,创建账号等级为“API 访问的账号”
比如账号名为 apitest,密码为 123456
对应关系如下:AppKey 不在网络中传递,仅作计算签名用!
AppID = apitest 账号 AppKey = 14e1b600b1fd579f47433b88e8d85291 明文密码2次MD5后的值
协议 | HTTP 或 HTTPS |
请求方法 | GET |
编码类型 | UTF-8 |
数据格式 | JSON |
请求URL格式 | /api/<api_name>?参数1=值1&参数2=值2&… |
参数说明:
字段名 | 字段含义 | 说明 |
AppID | API 账号名 | 必须 |
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 | 签名校验错误 |
-5002 | API 账号不存在 |
-5003 | 操作无权限 |
-5004 | API 请求时间过期 |