接口规范

接口规范

QLEN平台接口提供RESTful风格的WebAPI来实现对外服务,为了描述清楚这些接口,下面将从接口地址、HTTP方法、请求参数、响应结果这几个方面来详细说明。

1. 接口地址

接口地址,所有QLEN接口地址的前缀统一都是QLEN平台的接口网址(生产环境:https://api.qlen.cn/v1,沙箱环境:https://demoapi.qlen.cn/v1),后面跟接口URI,接口URI将在各个接口中具体说明。

2. HTTP方法

HTTP方法,QLEN接口利用HTTP协议的GETPOSTPUTDELETE方法来区分对资源的操作类型,如下表:

HTTP方法 作用
GET 用于获取数据
POST 用于提交新建数据
PUT 用于提交修改数据
DELETE 用于删除数据

3. 请求参数

请求参数,除了名称和类型外,还要描述两个方面:一是是否为必需项,如果不是必需项,则在传参时可以根据需要省略,服务端会使用默认值代替;另一个就是参数传入方式,说明如下:

传参方式 说明
query 参数以查询字符串的形式跟在URI后面,如:/token?seq=123
path 参数作为URI的一部分,如:/node/seq/123
json 参数以JSON格式封装成结构体,然后在请求中以Content-Type: application/json类型提交
file 参数是上传文件,文件以Content-Type: multipart/form-data类型提交

4. 响应结果

响应结果,包括HTTP协议中的状态码和响应结构体,下面详细描述。

4.1 状态码

QLEN接口主要利用了以下一些HTTP状态码:

态码 含义 作用
200 OK 表示请求成功,没有错误发生
400 Bad Request 表示参数格式不正确
401 Unauthorized 表示不允许客户端访问资源
404 Not Found 表示请求的资源不存在
500 Internal Server Error 表示服务器内部错误

4.2. 响应结构体

响应结构体是服务端执行完用户请求后返回的结果,QLEN接口返回的响应结构体统一以JSON格式封装,响应结构体各属性描述如下:

属性 类型 作用
status 布尔型 指示请求是否成功
code 整型 请求失败时的错误编码
message 字符串 请求失败时的错误类型
data 复合型 请求成功时返回的是结果数据,失败时返回的是错误提示信息
  • 请求成功的返回结构体示例:
{  
    "status":true,  
    "code":0,  
    "message":"OK",  
    "data":"d7e4045f8ddf4ed7beeb2db402fb4686"  
}  
  • 请求失败的返回结构体示例:
{  
    "status":false,  
    "code":211,  
    "message":"PARAM_INVALID",  
    "data":"引用哈希必须为64位十六进制字符"  
}  

4.3. 请求成功响应

请求成功时,HTTP状态码固定为200。响应结构体中status, code, message的值也都是固定的,分别为

"status":true
"code":0
"message":"OK"

data则随请求的不同有不同的结构,下面对几种复杂结构加以说明:

  • node:契链节点
属性 类型 作用
version 整型 版本,固定为0xFFFE,即-2
nodeHash 字符串 节点哈希,64位十六进制编码
nodeSeq 整型 节点序号
timestamp 整型 时间戳,单位:毫秒
nonce 整型 随机数
lastHash 字符串 父节点哈希,64位十六进制编码
referHash 字符串 引用哈希,64位十六进制编码
userId 字符串 用户编码,32位十六进制编码
serviceId 字符串 服务编码,32位十六进制编码
label 整型 信息标签
infoHash 字符串 信息哈希,64位十六进制编码
infoId 字符串 信息标识,不超过64位ASCII字符
  • pager:分页结构体
属性 类型 作用
totalElments 整型 总记录数
totalPages 整型 总页数
pageSize 整型 每页记录数
pageNumber 整型 当前页码
elements 复合型 当前页中的记录数组
  • nsum:节点统计信息
属性 类型 作用
nodeCount 整型 节点总数
userCount 整型 用户总数
vendorCount 整型 服务商总数
  • vsum:服务统计信息
属性 类型 作用
vendorId 字符串 服务编码
count 整型 该服务编码创建的节点总数

4.4. 请求失败响应

请求失败时,HTTP状态码为除200以外的其他编码,具体视错误类型来决定。响应结构体中status固定为falsedata为附加错误消息,而codemessage的值则随错误的不同而不同,具体如下表所示:

错误编码 错误名称 错误说明
100 PATH_INVALID 无效页面或网址
101 DIGEST_FAILED 提取文件摘要失败
102 QCHAIN_FAILED QChain访问失败
201 TOKEN_EXPIRED 令牌过期
202 TOKEN_INVALID 令牌解析失败
211 PARAM_INVALID 参数不合规
301 SERVICE_AUTH_FAILED 服务认证失败
302 SERVICE_UNMATCH 服务编码不符
303 SERVICE_INEXIST 服务编码不存在
304 SERVICE_INVALID 服务未审核或已禁用
305 USERID_INEXIST 用户编码不存在
311 COIN_LACKING 账户余额不足
401 ESCROW_NOFILE 未发现可用的上传文件
402 ESCROW_UPLOAD_FAILED 文件上传失败
403 ESCROW_SAVE_FAILED 文件保存失败
404 ESCROW_EXIST 存证文件已存在
421 DOWNLOAD_NOFILE 文件不存在
422 DOWNLOAD_FAILED 文件下载失败
501 NODE_INEXIST 节点不存在
502 NODE_NOESCROW 节点公证文件未存证
503 NODE_INFO_EXIST 信息哈希已存在,信息已公证
504 NODE_REFER_INEXIST 引用节点不存在
505 NODE_INNER_UNMATCH 内联引用时不能引用其他服务的节点
999 OTHER 其他异常