通用说明
XuperBaas API调用遵循HTTP协议
正式环境域名为 https://xuperbaas.baidu.com
所有request/response body内容均采用UTF-8编码。
API认证机制
所有API的安全认证一律采用非对称请求签名机制。对于每个HTTP请求,使用下面所描述算法生成一个认证字符串。提交认证字符串放在Authorization头域里。服务端根据生成算法验证认证字符串的正确性。
认证字符串生成公式
- version是正整数,目前支持1
- timestamp是生成签名时的间戳,精确到毫秒,长度为13
- 签名有效期是60秒
- sign是针对url的QueryString的签名,先计算请求参数哈希,然后使用非对称私钥计算签名值,最后做hex编码。
sign生成公式
- privateKey为非对称私钥,与头域的X-User-Pubkey对应的私钥
- signString包含两个部分,signString = timestampString + canonicalQueryString:
- timestampString为时间戳字符串,与Authorization中时间戳一致,转换公式为 _={timestamp}
- canonicalQueryString是对于URL中的Query String(Query String即URL中“?”后面的“key1 = value1 & key2 = value2 ”字符串)进行编码后的结果。
canonicalQueryString编码步骤
提取URL中的Query String项,即URL中“?”后面的“key1 = value1 & key2 = value2 ”字符串。 将Query String根据&分隔符拆开成若干项,每一项是key=value或者只有key的形式。 对拆开后的每一项进行编码处理,转换公式为 key + "=" + value 的形式。这里value不可以是空字符串。 将每一项转换后的字符串按照key字典顺序(ASCII码由小到大)排序,并直接拼接起来,生成相应的canonicalQueryString。 编码示例:
获取URL为http://127.0.0.1:8085/xbaas/v1/xchain/network/1/chain/xuper/totalTxHis?endTime=152324432942&type=1&num=3
的canonicalQueryString。
提取URL中的Query String,得到endTime=152324432942&type=1&num=3。
根据&对Query String进行拆分,得到endTime=152324432942、type=1、num=3三项。
对上面三项key进行(按照ASCII码由小到大)排序,得到结果是endTime=152324432942、num=3、type=1,然后直接拼接起来,得到CanonicalQueryString为endTime=152324432942num=3type=1。
如果时间戳是1648866157851,可以得到signString为_=1648866157851endTime=152324432942num=3type=1。
响应结构体说明
- Content-Type: 默认类型为application/json,特殊情况下面接口会说明
- 状态码都返回200,具体响应中code为0则为接口调用没有问题,code不为0则具体查看msg错误信息
无分页响应体定义:
字段 | 类型 | 说明 |
---|---|---|
msg | string | 响应消息 |
code | string | 状态码,和HTTP状态码有区别,code为0则成功,不为0则具体查看msg错误信息 |
data | object | 具体数据 |
有分页响应体定义:
字段 | 类型 | 说明 |
---|---|---|
msg | string | 响应消息 |
code | string | 状态码,和HTTP状态码有区别,code为0则成功,不为0则具体查看msg错误信息 |
data | object | 结构体定义如下 |
分页响应object定义:
字段 | 类型 | 说明 |
---|---|---|
count | int | 数据总条数 |
data | []object | 具体数据 |
响应示例: