以下是一个接口规范的文档。
基本规范
每个请求都要携带的参数,用于描述每个请求的基本信息,后端可以通过这些字段进行接口统计,或APP终端设备的统计,一般放入header或者url参数中
字段名称 | 说明 |
---|---|
version | 客户端版本, eg:1.0.0 |
token | 登录成功之后,server返回的登陆令牌 |
os | 手机系统版本,eg:4.4 |
from | 来源,eg:android/h5/ios |
screen | 手机尺寸,eg:1080*1920 |
model | 机型信息,eg:iphone x |
channel | 渠道信息,eg:com.sj.qq |
net | APP网络状态 |
appid | app唯一标识符 |
请求Path
基本原则(post=增,get=查,delete=删,put=改)
响应数据
字段名称 | 说明 |
---|---|
code | 响应状态码 |
msg | 信息 |
time | 时间戳 |
data | 数据实体 |
json示例
{
"code":200,
"msg":"成功",
"time":"14822",
"data": {
}
}
//先解析code和msg,判断code==200的情况下解析data
对于list型数据,data需要返回total,客户端用来判断是否本地list还可以加载更多
eg:
"data": {
"list": ["苹果", "香蕉"],
"total": "10"
}
命名规范--看着来吧
上传/下载接口--暂时不用
- 上传,下载时,除了file本身,还要携带该file的md5,在传输过程中可能丢失部分数据,,导致文件损毁,所以需要md5jinxing完整性校验
- 上传成功之后,在开发阶段可以将图片的url,图片存储的大小,模糊度等一起返回,上线之后去掉,留下url
兼容性
APP1.0在使用接口A,如果此时在开发1.1的时候修改了接口A的逻辑,在1.1发版的时候线上就会出现2个版本的客户端访问同一个接口A,为了保证1.0客户端调用接口A不会出错,就需要通过version字段或path中的"v1/login","v2/login"进行区分,不同版本客户端访问同一接口时处理逻辑要各自独立.
特别提几句
- 避免浮点型数据计算。浮点型数据计算会损失精度。eg:1.5km可以转换成1500m进行处理
- 身份证,手机号等150******000