token请求合法性验证
通过appid和appkey和时间进行拼接,然后进行md5算法获取一个加密值
数据加密
AES进行加密
数据交换采用AES加密算法加密,密钥:appkey(32为),向量:密钥的前16位, 模式:CBC,填充:PKCS7
请求参数中如包含了敏感数据(如密码等)则需要对敏感数据进行加密 返回数据中的业务数据(data字段)一律进行加密,客户端需自行解密
对称加密比非对称加密快捷一些,使用一个密钥
{ "code":1, "message":"the message", "data":"加密后的字符串" }
请求(Request)
公共参数
公共请求参数是指每个接口都可能需要传递的参数,公共参数通过header传递
参数 | 说明 | 备注 | 是否必传 |
---|---|---|---|
appid | 应用ID | 通过后台获取 | 是 |
version | Api的版本号 | 1.0 | 是 |
platform | 平台 | iOS,Android | 是 |
system | 操作系统版本 | android 10, iOS9 | |
brand | 手机品牌 | 苹果,华为,小米... | |
model | 手机型号 | 华为P30,小米10,iPhone x | |
uuid | 设备唯一码 | ||
network | 网络 | wifi ,4G ,5G | |
sign | 签名 | 参考下面的签名机制 | 是 |
timestamp | 时间搓 | 是 | |
token | 用户token | 需要登录才能访问的接口需带上此参数 | 可选 |
其他说明
-
post 请求数据是一个对象,进行转换为json
-
常用参数约定
参数 说明 示例 page 分页的页码 1 size 分页每页数据大小 10,默认是10 其他待补充
响应(Response)
所有接口都应遵循以下的数据格式,code 为业务状态码,http 相关遵循标准HTTP状态码
{ "code":1, "message":"the message", "data":{} }
字段 | 说明 | 备注 |
---|---|---|
code | 状态码 | 1是成功,0是失败。见状态码说明表 |
message | 错误信息 | 当code 不是1时返回具体的错误信息 |
data | 具体的业务数据 | 注意:数据内容为对JSON数据加密后的字符串,并非明文 |
分页数据结构约定
字段 | 说明 | 备注 |
---|---|---|
page | 当前页码 | 1 |
size | 每页数据大小 | 10 |
total_size | 总页数 | 100 |
total_page | 总页数 | 10 |
常用状态码说明
状态码 | 说明 |
---|---|
1 | 成功 |
0 | 失败 |
101 | appid为空或者app不存在 |
102 | 签名错误 |
103 | 签名失效(已经使用过一次) |
104 | 请求已失效(时间戳过期) |
105 | 缺少必传参数 |
106 | 参数格式有误或者未按规则提交 |
201 | 缺少token |
202 | token无效/错误 |
203 | token已过期 |
401 | 没有权限调用 |
501 | 数据库连接出错 |
502 | 读写数据库异常 |
其他的业务状态码在每个接口中单独描述
http 状态码
-
200 OK 服务器返回用户请求的数据,该操作是幂等的
-
201 CREATED 新建或者修改数据成功
-
204 NOT CONTENT 删除数据成功
-
400 BAD REQUEST 用户发出的请求有问题,该操作是幂等的
-
401 Unauthoried 表示用户没有认证,无法进行操作
-
403 Forbidden 用户访问是被禁止的
-
422 Unprocesable Entity 当创建一个对象时,发生一个验证错误
-
500 INTERNAL SERVER ERROR 服务器内部错误,用户将无法判断发出的请求是否成功
-
503 Service Unavailable 服务不可用状态,多半是因为服务器问题,例如CPU占用率大,等等